目录:
慢SQL
连接数
缓存
锁
Statement
吞吐
数据库参数
慢SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #查看慢日志开启状态 show variables like 'slow_query_log'; #打开\关闭慢日志(OFF) set global slow_query_log='ON'; #慢查询数量 SHOW GLOBAL STATUS LIKE '%Slow_queries%'; #慢查询时间阈值 show variables like '%long_query_time%'; #慢 Sql 日志路径 show variables like 'slow_query_log_file';
慢日志分析
连接数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #产看数据库最大连接数 show variables like '%max_connection%'; #看到服务器响应的最大连接数 show global status like 'Max_used_connections'; #临时设置数据库最大连接数、重启mysql会失效 set global max_connections=1000; #修改mysql配置文件my.cnf #在[mysqld]段中添加或修改max_connections值: max_connections=512 #查看mysql进程 show status like 'Threads%'; #Threads_connected :这个数值指的是打开的连接数. #Threads_running :这个数值指的是激活的连接数,这个数值一般远低于connected数值. #Threads_connected 跟show processlist结果相同,表示当前连接数。准确的来说, #Threads_running是代表当前并发数
连接数指标
Threads_running
状态
描述
0-10
Normal
几乎所有硬件都没有问题
10-30
Busy
大多数硬件都可以,因为服务器多核
30-50
High
很少有工作负载需要运行这么多线程。它可以短期爆发(<5min),但如果持续时间较长,则响应时间很可能很慢
50-100
Overloaded
某些硬件可以处理此问题,但是不能期望在此范围内成功运行。对于我们的本地部署硬件而言,此范围内的瞬时突发(<5s)通常是可以的。
>100
Failling
在极少数情况下,MySQL可以运行大于100个线程,但在此范围内可能会失败
指导值:
Threads_running < 50
1:1000 Threads_running:QPS
缓存(bufferCache)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 未从缓冲池读取的次数 show status like 'Innodb_buffer_pool_reads'; # 从缓冲池读取的次数 show status like 'Innodb_buffer_pool_read_requests'; # 缓冲池总页数 show status like 'Innodb_buffer_pool_pages_total'; # 缓冲池空闲页数 show status like 'Innodb_buffer_pool_pages_free'; #缓存命中率计算命中率 1-Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests)*100% # 缓存池使用率 ((Innodb_buffer_pool_pages_total-Innodb_buffer_pool_pages_free)/Innodb_buffer_pool_pages_total)*100%
锁(Lock)
1 2 3 4 5 6 7 8 9 10 11 # 锁等待个数 show status like 'Innodb_row_lock_waits'; # 平均每次锁等待时间 show status like 'Innodb_row_lock_time_avg'; # 查看是否存在表锁 # 备注:锁等待统计得数量为累加数据,每次获取得时候可以跟之前得数据进行相减,得到当前统计得数据 # SHOW OPEN TABLES [FROM db_name] [LIKE ‘pattern’] show open tables where in_use >=1;
Statement
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # insert数量 show status like 'Com_insert'; # delete数量 show status like 'Com_delete'; # update 数量 show status like 'Com_update'; #select 数量 show status like 'Com_select';
吞吐(Database Throughputs)
1 2 3 4 5 6 7 8 9 # 发送吞吐量 show status like 'Bytes_sent'; # 接收吞吐量 show status like 'Bytes_received'; # 总吞吐量 Bytes_sent+Bytes_received;
数据库参数