MySQL-索引优化篇(4)_索引的维护
文章目錄
- 生猛干貨
- 官方文檔
- 刪除重復索引
- 刪除冗余索引
- 檢查重復和刪除的索引 pt-duplicate-key-checker
- 查找未被使用的索引
- 更新索引統計信息
- 索引碎片整理
- 搞定MySQL
生猛干貨
帶你搞定MySQL實戰,輕松對應海量業務處理及高并發需求,從容應對大場面試
官方文檔
https://dev.mysql.com/doc/
如果英文不好的話,可以參考 searchdoc 翻譯的中文版本
http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html
刪除重復索引
舉個例子 ,對id 建立了多個索引 ,重復索引
primary key(id) 【主鍵索引】, unique key(id) 【唯一索引】, index(id)【普通索引】主鍵上MySQL會自動創建索引的,所以就么有必要再對主鍵建立 唯一索引,更沒有必要建立普通索引了。
刪除冗余索引
舉個例子
index(a) , index(a,b) 在a上建立普通索引 , 在a 、b 建立了聯合索引。
這種情況是冗余的, 只需要保存 那個聯合索引中就行了,刪除 對a 單獨建立的普通索引即可。
因為 a 都在左側, 所以 查詢a, 也是可以走那個聯合索引的。
primary key(id), index(a, id)
這種情況是冗余的,因為Innodb中對于二級索引會自動增加 主鍵索引,所以 也是沒必要對a 和 主鍵id 建立聯合索引的。
檢查重復和刪除的索引 pt-duplicate-key-checker
利用第三方插件 pt-duplicate-key-checker 。
pt-duplicate-key-checker是percona-toolkit中一個工具,它可以檢測表中重復的索引或者主鍵,這款工具可以幫助我們找到重復的索引并給出建議。
下載地址: https://www.percona.com/downloads/percona-toolkit/LATEST/ ,選擇合適的操作系統 下載。
安裝
[root@artisan ~]# yum -y install percona-toolkit-3.1.0-2.el7.x86_64.rpm位于 : /usr/bin/pt-duplicate-key-checker
用法
[root@artisan ~]# pt-duplicate-key-checker --host=192.168.18.131 --user='root' --password='artisan' --databases=artisan更多用法 pt-duplicate-key-checker --help
查找未被使用的索引
SELECTOBJECT_SCHEMA,OBJECT_NAME,INDEX_NAME,b.`TABLE_ROWS` FROM`performance_schema`.table_io_waits_summary_by_index_usage a JOIN information_schema.`TABLES` b ON a.OBJECT_SCHEMA = b.TABLE_SCHEMA AND a.OBJECT_NAME = b.TABLE_NAME WHEREINDEX_NAME IS NOT NULL AND COUNT_STAR = 0 ORDER BYOBJECT_SCHEMA,OBJECT_NAME;更新索引統計信息
analyze table table_name索引碎片整理
索引在使用的過程中 會產生碎片 , 表也在使用的過程中會產生碎片
查看 某個表的 碎片程度
SELECTROW_FORMAT,TABLE_ROWS,DATA_LENGTH,INDEX_LENGTH,MAX_DATA_LENGTH,DATA_FREE,ENGINE FROMinformation_schema.`TABLES` WHERETABLE_SCHEMA = 'SAKILA' AND TABLE_NAME = 'ACTOR' LIMIT 1;整理
optimize table table_name這個地方需要注意,閑時操作。 使用不當會導致鎖表
搞定MySQL
總結
以上是生活随笔為你收集整理的MySQL-索引优化篇(4)_索引的维护的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL-索引优化篇(3)_利用索引优
- 下一篇: MySQL-获取有性能问题SQL的方法_