mysql性能监控

mysql> show global status like '%Com_update%'; //执行更新的个数
mysql> show global status like '%Com_select%'; //执行查询的个数
mysql> show global status like '%Com_insert%' //执行插入个数
mysql> show global status like '%Com_delect%'; //执行删除的个数
mysql> show global status like '%Com_rollback%'; //执行回滚的操作
mysql> show global status like '%Bytes_received%'; //接收的字节数
mysql> show global status like '%Bytes_sent%'; //发送的字节数
mysql> show global status like '%com_commit%'; //提交的事务数量,可以用来统计TPS,计算公式:Com_commit/S+Com_rollback/S
mysql> show global status like '%com_begin%'; //开启的事务数
mysql>show processlist //查看全部的线程,关注time列参数,分析用户进程占用mysql连接数时长;

mysql>show variables like '%slow%'; //慢查询
mysql> show variables like "long%"; //慢查询
mysql> show global status like 'key_read%'; //请求在内存中没有找到,直接从硬盘读取索引,计算索引未命中缓存;
mysql> show global status like 'key_read_requests'; //表示总共的索引请求数
mysql> show global status like 'thread%'; //线程缓存查询
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 4 | //缓冲池线程个数
| Threads_connected | 6 | //连接中的线程个数
| Threads_created | 97 | //已经创建的线程个数
| Threads_running | 1 |
+-------------------+-------+
4 rows in set (0.00 sec)
mysql> show status like 'threads_cached'; //查看线程缓存内的线程的数量
mysql> show status;
mysql> show status like '%Aborted_clients%'; //由于客户没有正确关闭连接已经死掉,已经放弃的连接数量;
mysql> show status like '%Aborted_connects%'; //尝试已经失败的Mydql服务器连接次数;
mysql> show status like '%connections%'; //试图连接mysql的次数
+-----------------------------------+---------------------+
| Variable_name | Value |
+-----------------------------------+---------------------+
| Connection_errors_max_connections | 0 |
| Connections | 27962 |
| Max_used_connections | 13 |
| Max_used_connections_time | 2018-06-26 11:28:15 |
+-----------------------------------+---------------------+
mysql>show status like '%delayed_insert_threads%';//正在使用延迟插入处理器线程的数量;
mysql> show status like '%Delayed_errors%'; //写入发生错误的行数;
mysql> show status like '%open_table%'; //打开表的数量
mysql> show global status like "%opened__tables%"; //曾经打开表的数量
mysql> show status like '%open_file%'; //打开文件的数量
mysql> show status like '%questions%'; //查询表的数量
mysql> show status like '%threads_connected%'; //打开链接的数量
mysql> show status like '%threads_running%'; //不在睡眠的线程的数量
mysql> show status like '%uptime%'; //服务器工作了多少秒
mysql>show status like '%lock%'; //死锁信息
mysql> show status like '%table%'; //表级锁
| Table_locks_waited | 0 |
mysql> show global status like 'innodb_row_lock%'; //查看锁的具体值
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_row_lock_current_waits | 0 | //当前正在等待锁定的数量;
| Innodb_row_lock_time | 51825 | //从系统启动到现在锁定总时间长度;
| Innodb_row_lock_time_avg | 2159 | //每次等待所花平均时间
| Innodb_row_lock_time_max | 15858 | //从系统启动到现在等待最常的一次所花的时间;
| Innodb_row_lock_waits | 24 | //系统启动后到现在总共等待的次数;
+-------------------------------+-------+
5 rows in set (0.00 sec)

mysql> show global status like 'tabl%'; //全局表锁
+----------------------------+----------+
| Variable_name | Value |
+----------------------------+----------+
| Table_locks_immediate | 156 |
| Table_locks_waited | 0 | //的值比较高,则说明存在着较严重的表级锁争用情况。
| Table_open_cache_hits | 12991901 | //表示立即释放表锁数
| Table_open_cache_misses | 4153 |
| Table_open_cache_overflows | 2035 |
+----------------------------+----------+
5 rows in set (0.00 sec)

show status like 'com_select'; //查看本次MySQL启动后执行的select语句的次数
show global status like 'com_insert'; //查看本次MySQL启动后执行insert语句的次数

//查询缓存
mysql> show global status like 'qcache%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 1031832 |
| Qcache_hits | 0 |
| Qcache_inserts | 0 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 10400979 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 1 |
+-------------------------+----------+
8 rows in set (0.00 sec)
Qcache_free_blocks表示缓存中相邻内存块的个数,数目越大可能有碎片,flush query cache会对缓存中的碎片进行整理。
Qcache_free_memory 表示缓存中空闲内存
Qcache_hits命中查询缓存的次数
Qcache_inserts插入一个查询到缓存的次数,命中次数除以插入次数就是不中比率。
Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)
Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。
Qcache_total_blocks:缓存中块的数量。

mysql> show variables like 'query_cache%'; //query_cache配置
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_cache_limit | 1048576 | //超过此大小的查询将不缓存
| query_cache_min_res_unit | 4096 | //缓存块的最小大小
| query_cache_size | 1048576 | //查询缓存大小
| query_cache_type | OFF | //缓存类型
| query_cache_wlock_invalidate | OFF | //当有其他客户端正在对MyISAM表进行写操作时,如果查询在query cache中,是否返回cache结果还是等写操作完成再读表获取结果。
+------------------------------+---------+
5 rows in set (0.00 sec)
查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%
如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。
查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%
查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。
查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%
示例服务器 查询缓存碎片率 = 20.46%,查询缓存

posted on 2018-07-13 14:12  美丽de世界  阅读(2563)  评论(0编辑  收藏  举报