Galera集群server.cnf参数调整--Innodb存储引擎内存相关参数(一)

本文详细介绍了InnoDB引擎中的内存组成及其配置参数的作用。主要内容包括缓冲池(buffer pool)、重做日志缓存(redo log buffer)和额外的内存池(additional memory pool)等关键组件。文中还提供了如何根据系统情况进行合理配置的建议。

innodb引擎中,内存的组成主要有三部分:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional memory pool)

【参数1innodb_buffer_pool_size

主要用来缓存innodb表的索引、数据,是插入数据时的缓冲。

/*Innodb存储引擎的缓存机制和Myisam最大的区别就在于他不紧可以缓存索引,还会缓存实际的数据。所以相同的物理环境,Innodb对磁盘IO的优化会优于Myisam*/

当系统上线后,我们可以通过Buffer Pool实时状态,来做进一步的分析:

 

从这里我们能看出Read命中的情况:

 

Read命中率=Innodb_buffer_pool_read_requests-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests

 

配图是默认的情况,根据公式就是(该db很空闲,但参考机器性能,及mysql手册推荐值,仍可对该参数进行调整。)

 

 

Innodb_buffer_pool_reads的数值统计是通过物理读来获取的数据。

 

Innodb_buffer_pool_pages_free这个数值需要关注,空闲页的大小。

 

Innodb_buffer_pool_pages_flushed刷新页请求数量。

 

Innodb_buffer_pool_read_ahead预读入缓存的页数量。

 

Innodb_buffer_pool_wait_free等待空闲页的次数(关注)。

 

/*当用户需要读取一个页面,或者请求分配一个新页面进行插入,需要调用buf0flu.cc工程中的buf_LRU_get_free_block函数进行页面的分配。

 

首先尝试从buffer pool中的free list分配新页面,若free list中没有空闲页,同时当前系统正在进行flush,等待flush结束后进行分配;若free list中没有空闲页,不在flush,遍历LRU链表,寻找非脏页面置换到free list,然后刷新Innodb引擎统计,实现pages的释放。*/

 

innodb_buffer_pool_size

 

 

Innodb_buffer_pool_size默认为128M,若该物理机为mysql服务器,若使用的引擎只有innodb,可以考虑配置为物理内存的50%-70%

 

在mysql的conf中进行修改

# vim /etc/my.cnf.d/server.cnf

innodb_buffer_pool_size=80G

这个值如果调整过大,带来的IO性能上的优化将不会很明显,反而会造成cpu的压力过高。

 

【参数2Innodb_buffer_pool_instances

Innodb_buffer_pool_instancesInnodb_buffer_pool划分到不同的instance中,每个instance独立进行LRU Flush,有独立的mutex控制会避免内存锁的争用(大的并发状态下优化效果明显)。

/*注:与Innodb_buffer_pool_size参数相结合,每个instancesize确保不小于1G。一般设置也参考cpu个数(小于或等于cpu个数即可)。*/

 

【参数3Innodb_additional_mem_pool_size

这个参数用来设置Innodb存储的数据的目录信息和其他内部数据结构的内存池。

/*一般来讲,应用程序常用的业务表越多,这里配的内存就应该越大,对于稳定的程序,这个参数的大小是稳定的,可以关注错误日志来进行调整。从mysql 5.6.3开始,不再需要这个参数了。

(错误日志[Warning] option 'innodb_additional_mem_pool_size': signed value 512000 adjusted to 524288)。*/

在示例中走的是默认配置,默认配置是8M

Mysql手册中对于2G内存时推荐设置为20M。一般,设置过大会造成物理内存浪费,可以在上线一段时间内密切关注日志,进行参数调整。

db中进行调整,调整为20M

 

 

 

转载于:https://www.cnblogs.com/EndlessPang/p/5250610.html

2025-08-12T02:41:18.729128+08:00 357 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.4.5). 2025-08-12T02:41:20.730555+08:00 0 [Warning] [MY-010909] [Server] /usr/local/mysql/bin/mysqld: Forcing close of thread 326 user: 'root'. 2025-08-12T02:41:21.542490+08:00 0 [System] [MY-010910] [Server] /usr/local/mysql/bin/mysqld: Shutdown complete (mysqld 8.4.5) MySQL Community Server - GPL. 2025-08-12T02:41:21.542516+08:00 0 [System] [MY-015016] [Server] MySQL Server - end. 2025-08-12T02:41:24.806768+08:00 0 [System] [MY-015015] [Server] MySQL Server - start. 2025-08-12T02:41:24.928994+08:00 0 [System] [MY-010116] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.4.5) starting as process 461058 2025-08-12T02:41:24.961058+08:00 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=134217728. Please use innodb_redo_log_capacity instead. 2025-08-12T02:41:24.962737+08:00 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. 2025-08-12T02:41:26.088990+08:00 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. 2025-08-12T02:41:26.896179+08:00 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. 2025-08-12T02:41:26.896216+08:00 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. 2025-08-12T02:41:26.953086+08:00 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /tmp/mysqlx.sock 2025-08-12T02:41:26.953410+08:00 0 [System] [MY-010931] [Server] /usr/local/mysql/bin/mysqld: ready for connections. Version: '8.4.5' socket: '/usr/local/mysql/mysql.sock' port: 3306 MySQL Community Server - GPL. 上述是mysql重启前后的error日志,分析为何会重启
最新发布
08-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值