mysql 慢日志

在/etc/my.cnf中配置
# log
slow-query-log = on  #开启MySQL慢查询功能
slow_query_log_file = /data/mysql/slow.log  #设置MySQL慢查询日志路径
long_query_time = 3  #修改为记录3秒内的查询,默认不设置此参数为记录10秒内的查询
log-queries-not-using-indexes = on  #记录未使用索引的查询
image.png
查看slow.log的方式,例如查看几个G大小的log文件时,怎么去查看

采样日志内容, 如:tail -n 100000 slow.log > analytics.log
主要步骤:1)采样慢日志内容,找到sql语句 2)explain 分析sql语句,根据需要添加索引 3)迁移日志

mysqldumpslow slow.log |  less

mysqldumpslow基本使用

参数解释

-s, 是表示按照何种方式排序
c: 访问计数
l: 锁定时间
r: 返回记录
t: 查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t, 是top n的意思,即为返回前面多少条的数据;
-g, 后边可以写一个正则匹配模式,大小写不敏感的;

基本用法

例:
得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
得到按照时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more

mysqlsla 分析慢查询日志

1.mysqlsla下载

网上找

1.mysqlsla安装

下载下来的包扔到某个目录下:

tar zxvf mysqlsla-2.03.tar.gz  #解压
cd  mysqlsla-2.03  #进入安装目录
perl Makefile.PL  #配置
make  #编译
make install  #安装

Count, sql的执行次数及占总的slow log数量的百分比.
Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.
Lock Time, 等待锁的时间.95% of Lock , 95%的慢sql等待锁时间.Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined, 扫描的行数量.
Database, 属于哪个[数据库]
Users, 哪个用户,IP, 占到所有用户执行的sql百分比
Query abstract, 抽象后的sql语句
Query sample, sql语句

https://zhuanlan.zhihu.com/p/106405711

mysql 5.7 版本中的sys库中的 statement_analysis表格式化存了所有慢查询sql语句。

image.png

说明schema_index_statistics的作用:查看每个索引的使用情况

table_schema: sys     #  索引的库
table_name: sys_config  # 索引的表
index_name: PRIMARY # 对应的索引
rows_selected: 0  # 执行次数
select_latency: 0 ps  # 查询次数 和时间
rows_inserted: 0  # 
insert_latency: 0 ps
rows_updated: 0
update_latency: 0 ps
rows_deleted: 0
delete_latency: 0 ps
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容