MYSQL 配置优化

2023-05-16

  • 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MYSQL 配置优化 的相关文章

随机推荐