MySQL 性能分析大杀器(第四章)

今天让我们了解下 MySQL 性能分析大杀器 —— Show Profile 和全局查询日志。这也是 MySQL 性能分析大杀器系列的最后一章。

Show Profile (可以看到每一条 sql 执行的生命周期)

是 mysql 提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于 sql 的调优的测量。
默认情况下,参数处于关闭状态,并保存最近 15 次的运行结果。

  1. 查看是否已经开启
# 查看是否已经开启
show VARIABLES like 'profiling';

# 如果没有开启的话,则开启
set profiling = on;
  1. 运行各种查询语句
  2. 使用以下命令,即可看到以上的查询语句
show profiles;
  1. 诊断 sql
show profile cpu,block io for query 1;(上一步问题 sql 前面的数字号码)

show profile 的可用参数为:

  • all :显示所有的开销信息
  • block io :显示块 io 相关开销
  • context switches :上下文切换相关开销
  • cpu :显示 cpu 相关开销信息
  • ipc :显示发送和接收相关开销信息
  • memory :显示内存相关开销信息
  • page faults :显示页面错误相关开销信息
  • source :显示和 Source_function,Source_file,Source_line 相关的开销信息
  • swaps :显示交换次数相关开销的信息

日常开发需要注意项

  1. converting HEAP to MyISAM 查询结果太大,内存都不够用了往磁盘上搬了。
  2. Creating tmp table 创建临时表。(拷贝数据到临时表,用完再删除)
  3. Copying to tmp table on disk 把内存中临时表复制到磁盘,危险!
  4. locked 锁表了

全局查询日志

永远不要在生产环境中开启这个功能!

  • 在配置文件中开启
    在 mysql 的 my.cnf 中,设置如下:
# 开启
general_log = 1
# 记录日志文件的路径
general_log_file = /path/logfile
# 输出格式
log_output = FILE
  • 直接执行 sql 语句开启
# 开启
set global general_log=1;
# 用表格的方式记录查询日志
set global log_output = 'TABLE';
# 此后,你所编写的 sql 语句,将会记录到 mysql 库里的 general_log 表
select * from mysql.general_log;

最后说个事
公号算法变了,为防止看不到我的更新
大家帮忙加个星标
点击上方的公众号卡片
再点右上角三个点
就能看到设为星标
算我跪下来求你们

作者简介:

95后某跨境电商企业程序猿,白天搬砖码代码,晚上自媒体写文章,持续更新编程、科技、互联网相关文章,偶尔也会无痛呻吟,感慨人生百态。自己淋过雨,所以也想为别人撑撑伞。

往期精选:

微信上的这3个隐藏“标志”,代表有人喜欢你,一眼便知

微信,看看你的另一半跟谁聊天频繁!

微信上已删除的聊天记录,用这几种方式就可以恢复啦!

让你的微信“拍一拍”有趣且不失风度

微信年度账单来了,不敢看!

还在使用默认的微信图标?赶紧换个吧!

我的微信和你们的不一样!?

原文始发于微信公众号(浅墨觅尘往):MySQL 性能分析大杀器(第四章)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/222099.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!