MYSQL 配置优化

  • max_connections

允许客户端并发连接的最大数量,默认值是151。

show status like '%connections%';

设置参数值应大于Max_used_connections。如果使用连接池,可参考连接池的最大连接数和每个连接池的数量作为参考设置

  • innodb_buffe_pool_instances

InnoDB缓存池被分成的区域数。对于1GB以上大的InnoDB缓存,将缓存分成多个部分可以提高MySQL服务的并发性,减少不同线程读缓存页的读写竞争。每个缓存池有它单独的空闲列表、刷新列表、LRU列表和其他连接到内存池的数据结构,它们被mutex锁保护。这个参数只有将innodb_buffer_pool_size参数设为1GB或以上时才生效。建议将每个分成的内存区域设为1GB大小。

在一些内存以及 CPU 内核超大型的数据库服务器上,可以在保证足够大的 IBP 内存的前提下,通过以下公式,协同增加缓存实例数量以及读写线程。

( innodb_read_io_threads + innodb_write_io_threads ) = innodb_buffe_pool_instances

如果仅仅是将读写线程根据缓存实例数量对半来分,即读线程和写线程各为实例大小的一半,肯定是不合理的。

例如应用服务读取数据库的数据多于写入数据库的数据,那么增加写入线程反而没有优化效果。

一般可以通过 MySQL 服务器保存的全局统计信息,来确定系统的读取和写入比率。

可以通过以下查询来确定读写比率:

SHOW GLOBAL STATUS LIKE 'Com_select';//读取数量
SHOW GLOBAL STATUS WHERE Variable_name IN ('Com_insert', 'Com_update', 'Com_replace', 'Com_delete');//写入数量

如果读大于写,应该考虑将读线程的数量设置得大一些,写线程数量小一些;否则,反之。

  • Innodb_buffer_pool_size

用于缓存InnoDB表数据、索引、插入缓冲、数据字典等信息。常用数据可以缓存在内存处理,提高很大效率。

官方建议:该参数设置为物理内存的50%-80%,

生产建议修改参数:(目前生产数据库内存64G)

innodb_buffer_pool_size = 32G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抹除不掉的轻狂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值