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,尽量通过添加或调整来消除。

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等

最新文章

  1. 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
  2. artdialog4.1.7 中父页面给子页面传值
  3. TortoiseSVN中出现的图标问题及解决方法
  4. iOS实现(超级猜图)源码
  5. nyoj 95 众数问题
  6. Mtk Android 打包解包*.img
  7. MSSQL中把表中的数据导出成Insert
  8. 关于SWT/JFace中其他常用的事件
  9. Linux下查看CPU信息
  10. 设置U盘为第一启动顺序
  11. 像素转换mm
  12. C# Redis学习系列一:Redis的认识、下载、安装、使用
  13. vue-router如何根据不同的用户给不同的权限
  14. DH 密钥交换算法
  15. 阿尔法冲刺——Postmortem会议
  16. Redis详解(一)------ redis的简介与安装
  17. react-高阶组件
  18. python自动化开发-[第三天]-编码,函数,文件操作
  19. PHP版本MS17-010检测小脚本
  20. lrzsz 移植到 ARM-linux 嵌入式板子上

热门文章

  1. 嵌入式开发之hi3519---GPIO 按键驱动
  2. Make ProgressBar Vertical
  3. extern、static、restrict、volatile 关键字
  4. QT 窗口拖拽移动实现
  5. Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决
  6. iOS - UIView属性hidden, opaque, alpha, opacity的区别
  7. Qt编写守护程序保证程序一直运行(开源)
  8. C - Yogurt factory
  9. solus 系统 - 自定义终端快捷键
  10. Int32 最大的数值是多少???(附十进制十六进制相互转换且包含正负数的java代码)