当前位置: 首页 > 科技观察

MySQL数据库监控指标总结:缓冲池使用

时间:2023-03-17 11:52:23 科技观察

如果您的数据库运行缓慢,或者由于某种原因没有响应查询,那么您的技术堆栈中依赖数据库的每个组件都会遇到性能问题。为了保证数据库的顺利运行,可以主动监控以下与性能和资源利用率相关的指标:缓冲池使用情况。缓冲池的使用MySQL的默认存储引擎InnoDB使用称为缓冲池的内存区域来缓存表和索引的数据。缓冲池指标是资源指标,而不是工作指标。默认情况下,缓冲池的大小通常相对较小,为128MiB。但是,MySQL建议它可以扩展到专用数据库服务器物理内存大小的80%。然而,MySQL也指出了一些注意事项:InnoDB的内存开销会使内存占用量增加超过缓冲池大小的10%。而且,如果物理内存用完,系统将求助于分页,导致数据库性能受到严重影响。缓冲池大小调整操作以块为单位执行,缓冲池的大小必须是块的大小乘以实例数乘以某个倍数。innodb_buffer_pool_size=N*innodb_buffer_pool_chunk_size*innodb_buffer_pool_instanceschunk的默认大小是128MiB,但从MySQL5.7.5开始可以自行配置。以上两个参数的值可以通过以下方式查看:SHOWGLOBALVARIABLELIKE"innodb_buffer_pool_chunk_size";SHOWGLOBALVARIABLELIKE"innodb_buffer_pool_instances";监控指标:Innodb_buffer_pool_read_requests和Innodb_buffer_pool_reads指标对于了解缓冲池利用率至关重要。Innodb_buffer_pool_read_requests跟踪合法读取请求的数量,而Innodb_buffer_pool_reads跟踪缓冲池无法满足因此只能从磁盘读取的请求数量。我们知道从内存读取通常比从磁盘读取快几个数量级,所以如果Innodb_buffer_pool_reads的值开始变大,就意味着数据库性能出现了很大的问题。缓冲池利用率是一个重要的指标,在??考虑扩展缓冲池之前应该检查它。utilizationmetrics不能直接读取,但是可以很容易的计算如下:并且还处于热身阶段。如果您的缓冲池没有填满,但正在有效地处理读取请求,那么您的工作数据集非常适合您当前的内存配置。将缓冲池指标转换为字节:大多数缓冲池指标以内存页为单位记录,但这些指标也可以转换为字节,从而更容易与缓冲池的实际大小相关联。例如,您可以使用跟踪缓冲池中内存页面总数的服务器状态变量找出总缓冲池大小(以字节为单位):Innodb_buffer_pool_pages_total*innodb_page_sizeInnoDB页面大小是可调的,但默认设置为16KiB,或者16,384字节。您可以使用SHOWVARIABLES查询来了解其当前值:SHOWVARIABLESLIKE"innodb_page_size";