【叶问】 MySQL常用的sql调优手段或工具有哪些
2024-09-06 17:07:29
MySQL常用的sql调优手段或工具有哪些
1、根据执行计划优化
通常使用desc或explain,另外可以添加format=json来输出更详细的json格式的执行计划,主要注意点如下:
1.1、type:显示关联类型。重点关注ALL(全表扫描)、index(全索引扫描);
1.2、key_len:使用到索引的长度。通常该值大于30就要注意被选中的索引是否字符串类型,可否进一步优化;
1.3、rows:预估扫描的行数。通常该值大于1万就要注意可否选择更合适的索引减少扫描的行数;
1.4、extra:显示额外信息。重点关注Using temporary,Using filesort,尽量通过添加或调整来消除。
1、根据执行计划优化
通常使用desc或explain,另外可以添加format=json来输出更详细的json格式的执行计划,主要注意点如下:
1.1、type:显示关联类型。重点关注ALL(全表扫描)、index(全索引扫描);
1.2、key_len:使用到索引的长度。通常该值大于30就要注意被选中的索引是否字符串类型,可否进一步优化;
1.3、rows:预估扫描的行数。通常该值大于1万就要注意可否选择更合适的索引减少扫描的行数;
1.4、extra:显示额外信息。重点关注Using temporary,Using filesort,尽量通过添加或调整来消除。
2、利用profiling优化
通过探针的方式详细记录sql执行过程详细代价,可以很清楚地了解到sql到底慢在哪个环节。
重点关注下列几种情况是否耗时较大:
sending data
creating sort index
sorting result
query end
Waiting ... lock
Creating tmp table
Copying to tmp table
3、利用optimizer_trace优化
可以输出优化器评估SQL执行计划的详细过程,尤其是每个可能的索引选择的代价。
利用它可以明白优化器为什么选中索引A,而不选中索引B。
4、利用session status优化
通过flush status重置session级别的状态值后,执行sql查看相应的状态变化量。
可重点关注几个信息:
Created_tmp_tables,创建内存临时表
Created_tmp_disk_tables,创建磁盘临时表,尤其注意
Handler_read_rnd,随机读
Handler_read_rnd_next,全表扫描或者排序或者读下一行
Select_scan,全表扫描
Select_full_join,全表join
Sort_merge_passes,多次归并排序
5、其他优化工具
MySQL workbench、pt-query-digest等
最新文章
- 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
- artdialog4.1.7 中父页面给子页面传值
- TortoiseSVN中出现的图标问题及解决方法
- iOS实现(超级猜图)源码
- nyoj 95 众数问题
- Mtk Android 打包解包*.img
- MSSQL中把表中的数据导出成Insert
- 关于SWT/JFace中其他常用的事件
- Linux下查看CPU信息
- 设置U盘为第一启动顺序
- 像素转换mm
- C# Redis学习系列一:Redis的认识、下载、安装、使用
- vue-router如何根据不同的用户给不同的权限
- DH 密钥交换算法
- 阿尔法冲刺——Postmortem会议
- Redis详解(一)------ redis的简介与安装
- react-高阶组件
- python自动化开发-[第三天]-编码,函数,文件操作
- PHP版本MS17-010检测小脚本
- lrzsz 移植到 ARM-linux 嵌入式板子上
热门文章
- 嵌入式开发之hi3519---GPIO 按键驱动
- Make ProgressBar Vertical
- extern、static、restrict、volatile 关键字
- QT 窗口拖拽移动实现
- Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决
- iOS - UIView属性hidden, opaque, alpha, opacity的区别
- Qt编写守护程序保证程序一直运行(开源)
- C - Yogurt factory
- solus 系统 - 自定义终端快捷键
- Int32 最大的数值是多少???(附十进制十六进制相互转换且包含正负数的java代码)