资讯详情

佬技术总监,是这样优化产线MySQL数据库配置的

??? 大家好,我是 ,10 致力于年产研经验 Python 传播相关技术栈 ?? ?? 如果这篇文章感觉不错,用小手点赞。 ?? ?? 如果本文发现错误,请在评论区纠正。 ?? ?? ?? ???

欢迎订阅专栏 ?? ?? 《Python 爬虫 120》?? ??

?? 最近更新:2022 年 3 月 23 日,橡皮擦的第 609 篇原创博客

文章目录

    • ?? 实战场景
    • ?? 查询缓存
      • query_cache_size/query_cache_type
    • ?? 各种缓存
      • sort_buffer_size
      • key_buffer_size
      • max_allowed_packet
    • ?? Innodb 缓存及其相关性
      • innodb_buffer_pool_size
      • innodb_log_file_size
      • innodb_lock_wait_timeout
      • innodb_lock_wait_timeout
    • ?? 连接数
      • max_connections
    • ?? 时间
      • wait_timeout 和 interactive_timeout
      • innodb 缓冲区配置

?? 实战场景

很多时候,当我们在服务器端安装 MySQL 软件完成后,将立即创建数据表结构并填充表数据,但事实上,我们可以提前做到 MySQL 修改配置文件,以达到最佳效率。

一些典型的配置调整。

?? 查询缓存

当数据库查询频繁使用时,打开此命令。

query_cache_size/query_cache_type

建议关闭查询缓存,即设置为

query_cache_size = 256M query_cache_type = 1 

可以使用以下命令查询缓存状态是否打开

show VARIABLES like "query_cache%"; 

在这里插入图片描述

如果查询到 query_cache_typeOFF ,表示缓存未打开,其他参数如下:

  • query_cache_limit:缓存限制大小,超过不缓存,缺省值为 1M,可以设置为 2M;
  • query_cache_min_res_unit:缓存块大小,默认 4KB;
  • query_cache_size:需要设置为查询缓存大小 1024 单位为字节的倍数;
  • query_cache_type:缓存类型,0 为不设置,1 2.缓存所有结果 为缓存 select 语句中通过 SQL_CACHE 指定的缓存。

禁止查询缓存的方法是直接注释 query_cache_limit 即可。

?? 各种缓存

sort_buffer_size

可以设置为

sort_buffer_size = 4M 

可用于查询排序的缓冲区大小,参数对应的分配内存是单连接独占的,只对 order by 和 group by 如果有,起作用 10 实际分配的内存是一个连接 10x4M = 10M,对于 4GB 内存服务器可以设置为 4~8M。

与参数对应的两个参数是 read_buffer_sizejoin_buffer_size ,分别表示读查询缓冲区大小,联合查询缓冲区大小。

key_buffer_size

根据服务器内存配置索引缓冲区的大小,一般占用实际内存 10%左右。

max_allowed_packet

默认情况下,网络传输中消息的最大值是 1M,最大值是 1024M,必须是 1024 的倍数。

?? Innodb 缓存及其相关性

innodb_buffer_pool_size

当使用缓冲池大小时 InnoDB 原则上,应设置的选项越大越好。内存总量一般设置 70%~80%大小。

设置格式如下,注意单位。

innodb_buffer_pool_size = 10G 

innodb_log_file_size

redo 重写日志的大小,以确保快速恢复,以确保编写操作崩溃 M 对于单位来说,提高这个值也可以提高效率。

 innodb_log_file_size = 128M 

innodb_lock_wait_timeout

默认为 50 ,修改为 30

innodb_lock_wait_timeout = 30 

innodb_lock_wait_timeout

MySQL 事务超时,默认时间为 50S,当数据库超过此值时,就会报错。

?? 连接数

max_connections

MySQL 当服务器并发量较大时,最大连接数将返回 too many connections 在处理错误时,可以调整该值,默认值 100,你可以设置为更高的值。

设置的时候,可以参考产线环境,在操作库上执行下述代码。

show variables like '%max_connections%';
show status like '%max_used_connections%';

对比得到的结果集,如果 max_used_connections = max_connections ,即调高 max_connections

如果 max_used_connections 远远小于 max_connections ,则调低该值。

该内容还会衍生出一个配置,即暂存链接数 back_log 。该值表示的是 MySQL 暂停新请求之前,短时间内可以寄存的请求数,一般设置为 100~200 即可。

⛳️ 时间

wait_timeout 和 interactive_timeout

wait_timeout 表示 MySQL 关闭非交互的连接之前的等待秒数; interactive_timeout 表示 MySQL 关闭交互连接之前要等待的秒数。

interactive_timeout 默认值是 28800,可以优化到 6000(即 100 分钟), wait_timeout 酌情进行处理即可。

show variables like "wait_timeout";
show variables like "interactive_timeout";

常用的配置如下:

binlog_format = row
log_bin = /data/mysql/data/mysql-bin # 电脑路径
log-error = /data/mysql/data/error.log # 电脑路径

lower_case_table_name = 1

slow_query_log = 1 # 开启慢日志
slow_query_log_file = /data/mysql/data/slow-query.log # 慢日志地址
long_query_time = 3 # 慢日志记录时间

max_connections = 1024 # 最大连接数
back_log = 500 # 暂存连接数
max_connect_errors = 20 # 最大错误连接数

wait_timeout = 60 # 非交互的连接
interactive_timeout = 6000 # 交互的连接

key_buffer_size=256M # 索引缓存区大小
query_cache_size = 256M # 查询索引大小
query_cache_type=1 # 缓存存储类型
query_cache_limit=50M # 缓存大小限制

sort_buffer_size = 2M
join_buffer_size = 2M
max_allowed_packet=32M # 额外分配内存
thread_cache_size=200 # 线程缓存大小

read_buffer_size=1M # 读取缓存大小
read_rnd_buffer_size=16M # 随机缓存区大小
bulk_insert_buffer_size=64M # 批量插入

innodb 缓冲区配置

# 缓存innodb表的索引,数据,插入数据时的缓冲总大小
innodb_buffer_pool_size = 10G
innodb_flush_log_at_trx_commit = 2 # 事务提交日志参数

innodb_log_buffer_size = 32M # 日志缓冲区大小
# 重做日志大小,用于 MySQL 崩溃时的重做恢复
innodb_log_file_size = 128M
# 日志组,默认为 2
innodb_log_files_in_group = 2

📣📣📣📣📣📣 🌻 本文如果发现错误,欢迎在评论区中指正哦 💗

欢迎大家订阅专栏 ⭐️ ⭐️ 《Python 爬虫 120》⭐️ ⭐️

标签: ld50s激光传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司