查询Mysql未使用的索引
来源:互联网 发布:python中sleep函数 编辑:程序博客网 时间:2024/04/26 07:14
在mysql中如何找出未使用或使用次数很少的索引,这样文章比较多,但很少文章提到用这些方法存在的风险。
http://www.mysqlperformanceblog.com/2012/06/30/find-unused-indexes/
http://www.mysqlperformanceblog.com/2012/12/05/quickly-finding-unused-indexes-and-estimating-their-size/
http://www.mysqlperformanceblog.com/2009/06/26/check-unused-keys-a-tool-to-interact-with-index_statistics/
这篇文章主要记录,我对如何找未使用索引的理解及风险(目前还未找到理想方法),能像oracle保存执行计划,根据执行计划(v$sql_plan)来判断索引使用情况是比较安全。当然oracle的index monitor特性类似percona的userstat有比较大的风险。
以下四个工具(方法)是在mysql找未使用索引比较方便,但都存在一定风险
1、mysqlidxchx
2、pt-index-usage
3、userstat
4、check-unused-keys
1、mysqlidxchx工具很长时间没有更新,但主要用来分析general log、slow.log,来判断实例中那个索引是可以删除,但这个工具没有经过实战,风险很大。
2、pt-index-usage原理来类似mysqlidxchx,执行过程中性能消耗比较严重,如果要在生产库上部署,最好在凌晨业务低锋时使用,pt-index-usage只支持slow.log格式的文件,如果要全面分析整个实例索引使用情况,需要long_query_time设置成0,才能把所以的sql记录下来,但同时会对磁盘空间造成压力,同时pt-index-usage对大文件分析就是件痛苦的事。当然pt-index-usage可以考虑部分表索引使用情况的确认。
3、最看好的userstat,收集信息性能优越,成本低。这个patch是google贡献的(userstat_running),percona把它改名成userstat,默认是不开启的,开启是会收集客户端、索引、表、线程信息存储在CLIENT_STATISTICS、INDEX_STATISTICS、TABLE_STATISTICS、THREAD_STATISTICS。Userstat的bug导致的问题太严重,直接导致mysql crash,到目前淘宝生产环境还没有使用。
4、Ryan Lowe的check-unused-keys脚本基于userstat,能够比较方便输出需要删除的索引。
小结:mysql能把每条sql执行计划保存在性能视图中,写入性能视图成本是非常小,用户可以根据执行计划来判断索引使用情况,分析执行计划突变的监控。
转自:http://ourmysql.com/archives/1175
- 查询Mysql未使用的索引
- mysql如何查看未使用的索引
- mysql 索引的使用和查询语法
- MySQL查询索引的正确使用
- Mysql order by语句未使用索引的思考
- mysql慢查询Slow Query Log和未使用索引(Not Using Indexes)查询配置和使用
- MySQL查询优化-使用索引
- MYSQL查询优化:使用索引
- MYSQL查询优化:使用索引
- MYSQL查询优化:使用索引
- MYSQL查询优化:使用索引
- mysql like查询 使用索引
- mysql查询索引使用情况
- MYSQL使用索引导致查询变慢的例子
- 某些mysql like查询也是可以使用到索引的
- 某些mysql like查询也是可以使用到索引的
- MySQL中查询不使用索引的情况汇总
- oracle_为何在查询中索引未被使用
- 《iOS Human Interface Guidelines》——3D Touch
- 蓝桥杯 特殊回文数
- 关于Python升级版本出现的问题
- ios loading视图动画(模仿58同城)
- iOS正则表达式
- 查询Mysql未使用的索引
- Unbutn上搭建android开发环境的简短总结
- Android,iOS,浏览器打开手机QQ与指定用户聊天界面
- iOS_带文字的UISwitch
- Dubbo原理解析
- bzoj1050(最小生成树 并查集)
- 系统属性
- 蓝桥杯 十进制转十六进制
- HDOJ--2014