mysql性能剖析
来源:互联网 发布:软件怎么挣钱 编辑:程序博客网 时间:2024/06/07 16:12
应用程序层面剖析
在程序这一层面进行剖析,第三方工具new relic, oneapm等.可以很直观的展现程序的使用情况,服务器cup,磁盘等情况,每一个请求的响应时间等.
mysql数据库层面剖析
在定位到是数据库比较慢之后,那么如何定位到是哪些sql执行比较缓慢,通过下面的慢查询日志.
慢查询日志
( http://www.cnblogs.com/kerrycode/p/5593204.html)
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
slow_query_log
是否开启慢查询日志,1表示开启,0表示关闭。
log-slow-queries
旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
slow-query-log-file
新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
long_query_time
慢查询阈值,当查询时间多于设定的阈值时,记录日志。
log_queries_not_using_indexes
未使用索引的查询也被记录到慢查询日志中(可选项)。
log_output
日志存储方式。log_output=’FILE’表示将日志存入文件,默认值是’FILE’。log_output=’TABLE’表示将日志存入数据库,这样日志信息就会被写入到mysql.slow_log表中。MySQL数据库支持同时两种日志存储方式,配置的时候以逗号隔开即可,如:log_output=’FILE,TABLE’。日志记录到系统的专用日志表中,要比记录到文件耗费更多的系统资源,因此对于需要启用慢查询日志,又需要能够获得更高的系统性能,那么建议优先记录到文件。
慢查询日志配置
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的
SET GLOBAL slow_query_log=1;
来开启 0 表示关闭
使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)
更多细节 如何查看日志 pt-quert-dugest 通过这个工具即可查看了
剖析单挑查询
通过慢查询日志定位到了单条查询的缓慢,那么进一步的剖析单挑sql语句.
show profile
此命令是在mysql5.1以后的版本中加入的,默认是禁用的,可以查看sql语句执行情况,CPU,IO使用情况等.
SHOW VARIABLES LIKE ‘%PROFILING%’;查看是否开启
set profiling = 1 开启 0 表示关闭;
profiling是用户变量,每次都得重新启用。
测试sql
执行sql : SELECT * FROM people WHERE phone LIKE ‘1355%’;
执行命令 show profiles; 可以看到query_ID等于5 查询耗时 53秒.
执行命令 show profile for query 5;
可以进一步查看到 具体是哪个环节使用时间比较长.
SHOW profile block io,cpu FOR QUERY 5;
进一步查看cpu,IO使用情况.
获取其他信息。都可以通过执行 “SHOW PROFILE * FOR QUERY n” 来获取。参考地址:http://dev.mysql.com/doc/refman/5.6/en/show-profile.html
show status
show status是一个计算器,可以统计某些活动,如 索引的读取,临时表,句柄等.
通过 flush status,可以清空计算器
执行命令查看
SHOW STATUS WHERE variable_name LIKE ‘Handler%’ OR variable_name LIKE ‘Created%’;
执行一条sql SELECT * FROM people2 LIMIT 10000;
在执行上面的查看计算器语句 可以看到该语句的执行情况,做了哪些操作.
explain
查看mysql查询优化器如何执行该sql,具体使用查看另一篇博客.
http://blog.csdn.net/jiuxiao199132/article/details/70157527
- MySQL服务器性能剖析
- MySQL性能剖析
- mysql 性能剖析
- mysql性能剖析
- MySQL性能问题剖析----死锁
- 3.高性能MySQL --- 服务器性能剖析
- 高性能Mysql:服务器性能剖析
- 高性能mysql笔记---mysql服务器性能剖析[-2-]
- MySQL性能剖析工具(pt-query-digest)
- MySQL单条查询性能剖析
- MySQL性能剖析工具(pt-query-digest)
- 高性能MySQL读书笔记:3、服务器性能剖析
- 4.高性能MySQL --- 服务器性能剖析( 2 )
- Mysql单条查询性能剖析 show profile
- 【高性能MySQL】读书摘录2-第三章、服务器性能剖析
- 关注性能: 边缘剖析
- gamebryo--NiMetrics性能剖析
- [Java性能剖析]前言
- 前端面试题
- STM系列 Flash操作
- Ubuntu 16.04 编译Gvim/vim
- Linux下的task_struct
- (转)设计模式之观察者模式在ListView中的应用
- mysql性能剖析
- C# using 三种使用方式
- RAISE_APPLICATION_ERROR用法
- Android主线程向子线程中发送信息
- 最长回文字串--Manacher算法
- RTP协议
- Apache服务器对比tomcat服务器
- 学习笔记:View的事件体系
- YLChart 图表绘制