这里列出了一些如何监视你安装的 mysql 效能的一些 ideas 。监视总是一个持续的过程。你需要知道哪种模式对你的资料库是好的,什么是问题的表象,甚至是危险的情况。
一下列出了用来去监视你的系统的主要引数:
– mysqladmin extended (绝对值)
– mysqladmin extended -i10 -r (相对值)
– mysqladmin processlist
– mysql -e “show innodb status”
– OS data. vmstat/iostat
– MySQL error log
– InnoDB tablespace info.
1) mysqladmin extended (绝对值)
重点去监视的值有:
* Slave_running: 如果系统有一个从复制站群服务器,这个值指明了从站群服务器的健康度
* Threads_connected: 当前客户端已连线的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
* Threads_running: 如果资料库超负荷了,你将会得到一个正在(查询的语句持续)增长的数值。这个值也可以少于预先设定的值。这个值在很短的时间内超过限定值是没问题的。当 Threads_running 值超过预设值时并且该值在 5 秒内没有回落时, 要同时监视其他的一些值。
2)mysqladmin extended(计数器)
* Aborted_clients: 客户端被异常中断的数值(因为连线到 mysql 站群服务器的客户端没有正常地断开或关闭)。对于一些应用程式是没有影响的,但对于另一些应用程式可能你要跟踪该值,因为异常中断连线可能表明了一些应用程式有问题。
* Questions: 每秒钟获得的查询数量。也可以是全部查询的数量(注:可以根据你输入不同的命令会得到你想要的不同的值)。
* Handler_*: 如果你想监视底层(low-level)资料库负载,这些值是值得去跟踪的。如果 Handler_read_rnd_next 值相对 于你认为是正常值相差悬殊,可能会告诉你需要优化或索引出问题了。 Handler_rollback 表明事务被回滚的查询数量。你可能想调查一下原因。
* Opened_tables: 表 WordPress 加速缓存没有命中的数量。如果该值很大,你可能需要增加 table_cache 的数值。典型地,你可能想要这个值每秒开启的表数量少于 1 或 2.
* Select_full_join: 没有主键(key)联合(Join)的执行。该值可能是零。这是捕获开发错误的好方法,因为一些这样的查询可能降低系统的效能。
* Select_scan: 执行全表搜寻查询的数量。在某些情况下是没问题的,但占总查询数量该比值应该是常量(注:Select_scan 除以总查询数量商应该是常数)。如果你发现该值持续增长,说明需要优化,缺乏必要的索引或其他问题。
* Slow_queries: 超过该值(–long-query-time)的查询数量,或没有使用索引查询数量。对于全部查询会有小的冲突。如果该值增长,表明系统有效能问题。
* Threads_created: 该值应该是低的。较高的值可能意味著你需要增加 thread_cache 的数值,或你遇到了持续增加的连线,表明了潜在的问题。
3)mysqladmin processlist or “SHOW FULL PROCESSLIST” 命令
你可以通过使用其他的统计资讯得到已连线执行绪数量和正在执行执行绪的数量,检查正在执行 的查询花了多长时间是一个好主意。如果有一些长时间的查询(由于很差的构思或公式),管理员可以被通知。你可能也想了解多少个查询是在”Locked” 的 状态——该值作为正在执行的查询不被计算在内而是作为非活跃的。一个使用者正在等待一个资料库响应。
4) “SHOW INNODB STATUS” 命令
该语句产生很多资讯,从中你可以得到你感兴趣的。首先你要检查的就是 “从最近的 XX 秒计算出来的每秒的平均负载” 。
* Pending normal aio reads: 该值是 innodb io 请求查询的大小(size)。如果该值大到超过了 10—20,你可能有一些瓶颈。
* reads/s, avg bytes/read, writes/s, fsyncs/s: 这些值是 io 统计。对于 reads/writes 大值意味著 io 子系统正在被装载。适当的值取决于你系统的配置。
* Buffer pool hit rate: 这个命中率非常依赖于你的应用程式。当你觉得有问题时请检查你的命中率
* inserts/s, updates/s, deletes/s, reads/s: 有一些 Innodb 的底层操作。你可以用这些值检查你的负载情况检视是否是期待的数值范围。
4)OS 资料。检视系统状态好的工具是 vmstat/iostat/mpstat,这些可以看 man 手册
5)MySQL 错误日志—–在站群服务器正常完成初始化后,什么都不会写到错误日志中,因此任何在该日志中的资讯都要引起管理员的注意。
6)InnoDB 表空间资讯。 InnoDB 仅有的危险情况就是表空间填满—-日志不会填满。检查的最好方式就是:show table status; 你可以用任何 InnoDB 表来监视 InnoDB 表的剩余空间。