MySQL 是现而今最流行的开源关系型数据库服务器。因为它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力。
连接情况
缓冲池使用情况
每秒查询数
每秒事务数
监控客户端连接情况相当重要,因为一旦可用连接耗尽,新的客户端连接就会遭到拒绝。
名称 | 描述 | SQL查询语句 |
Threads_created | MySQL已创建的总连接数 | show global status like "Threads_created"; |
Threads_connected | MySQL已连接的连接数 | show global status like "Threads_connected"; |
Threads_cached | MySQL当前缓存的连接数 | show global status like "Threads_cached"; |
Threads_running | MySQL当前活跃的连接数 | show global status like "Threads_running"; |
通常情况下,Innodb_buffer_pool_reads的值越小越好,因为它表示从磁盘中读取数据页到缓冲池中的次数越少,缓冲池的命中率越高,查询性能和系统响应时间也会更好。如果Innodb_buffer_pool_reads的值较大,则可能表示缓冲池的大小不足或者热数据没有被缓存到缓冲池中,需要增加缓冲池的大小或者优化MySQL的查询语句,以提高缓存命中率和减少磁盘I/O的次数。
缓冲池利用率=(Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free) / Innodb_buffer_pool_pages_total
名称 | 描述 | SQL查询语句 |
Innodb_buffer_pool_pages_total | 缓冲池的页总数目。单位是page。 | show global status like "Innodb_buffer_pool_pages_total"; |
Innodb_buffer_pool_pages_free | 剩余的页数目。单位是page。 | show global status like "Innodb_buffer_pool_pages_free"; |
Innodb_buffer_pool_reads | 从磁盘读取数据页到缓冲池的次数 | show global status like "Innodb_buffer_pool_reads"; |
Innodb_buffer_pool_read_requests | 从缓冲池中读取满足数据请求的次数 |
show global status like "Innodb_buffer_pool_read_requests"; |
Query Per Second,每秒请求查询次数,即数据库每秒执行的SQL数量。
QPS作用:表达和衡量当前系统的负载。
Questions:MySQL从上一次启动到当前客户端发送给MySQL的查询数量,不包括存储过程内部的查询。它不统计COM_PING,COM_STATISTICS,COM_STMT_PREPARE,COM_STMT_CLOSE,COM_STMT_RESET数量,但它会把show命令计算到指标当中。
Queries:MySQL从上一次启动到当前客户端发送给MySQL的查询数量,包括存储过程内部的查询,它不统计COM_PING和COM_STATISTICS两个命令。
Com_select:MySQL从上一次启动到当前所执行的查询语句总数量。
由上可见,在数据库中执行show命令会使questions值加1,而com_select则不记录,而且对于数据库的监控,经常会用到show命令,所以在用questions方式计算时,数据其实是被污染的。
而且questions的值在设置环境变量的时候,也是一直在增长的,而com_select的值在此过程中,并不增长。所以在使用question方式进行计算时,人为拉高了qps的结果,相对来说,使用com_select此种方式来计算qps,相对比较帖近真实情况一些。
questions = show global status like "questions";
uptimes = show global status like "uptime";
公式1:QPS = questions/uptimes
公式2:QPS = (new_questions - old_questions)/seconds (单位时间,单位:秒)
com_select = show global status like "Com_select";
QPS = (new_com_select - old_com_select)/seconds(单位时间,单位:秒)
Transcantion Per Second,每秒事务数,即数据库每秒执行的事务数。
Com_commit:提交次数,MySQL从上一次启动到当前所执行的提交语句总数量,不会记录隐式提交的事务
Com_rollback:回滚次数,MySQL从上一次启动到当前所执行的回退语句总数量
commit = show global status like "Com_commit";
rollback = show global status like "Com_rollback";
公式1:TPS=(com_commit + com_rollback)/uptime
公式2:TPS= (new_commit - old_commit + new_rollback - old_rollback)/seconds(单位时间,单位:秒)
Com_update:MySQL从上一次启动到当前所执行的更新语句总数量
Com_delete:MySQL从上一次启动到当前所执行的删除语句总数量
Com_insert:MySQL从上一次启动到当前所执行的插入语句总数量
指定间隔时间内取值两次,然后新指标减去老指标后三个指标相加再除以间隔时间得出间隔时间内每秒平均TPS。
作为任何数据库管理策略不可或缺的一部分,MySQL监控用于在检测到性能漏洞时立即提醒管理员,并生成报告以分析此类挫折背后的原因。具有复杂IT结构的组织倾向于依赖MySQL监控工具,如PIGOSS BSM运维监控工具,这些工具非常专注于帮助用户从性能角度了解其数据库系统的运行方式,并深入到各个组件以实现异常检测和故障管理。