MySQL-索引优化篇(4)_索引的维护
文章目錄
- 生猛干貨
- 官方文檔
- 刪除重復(fù)索引
- 刪除冗余索引
- 檢查重復(fù)和刪除的索引 pt-duplicate-key-checker
- 查找未被使用的索引
- 更新索引統(tǒng)計(jì)信息
- 索引碎片整理
- 搞定MySQL
生猛干貨
帶你搞定MySQL實(shí)戰(zhàn),輕松對(duì)應(yīng)海量業(yè)務(wù)處理及高并發(fā)需求,從容應(yīng)對(duì)大場(chǎng)面試
官方文檔
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
刪除重復(fù)索引
舉個(gè)例子 ,對(duì)id 建立了多個(gè)索引 ,重復(fù)索引
primary key(id) 【主鍵索引】, unique key(id) 【唯一索引】, index(id)【普通索引】主鍵上MySQL會(huì)自動(dòng)創(chuàng)建索引的,所以就么有必要再對(duì)主鍵建立 唯一索引,更沒(méi)有必要建立普通索引了。
刪除冗余索引
舉個(gè)例子
index(a) , index(a,b) 在a上建立普通索引 , 在a 、b 建立了聯(lián)合索引。
這種情況是冗余的, 只需要保存 那個(gè)聯(lián)合索引中就行了,刪除 對(duì)a 單獨(dú)建立的普通索引即可。
因?yàn)?a 都在左側(cè), 所以 查詢a, 也是可以走那個(gè)聯(lián)合索引的。
primary key(id), index(a, id)
這種情況是冗余的,因?yàn)镮nnodb中對(duì)于二級(jí)索引會(huì)自動(dòng)增加 主鍵索引,所以 也是沒(méi)必要對(duì)a 和 主鍵id 建立聯(lián)合索引的。
檢查重復(fù)和刪除的索引 pt-duplicate-key-checker
利用第三方插件 pt-duplicate-key-checker 。
pt-duplicate-key-checker是percona-toolkit中一個(gè)工具,它可以檢測(cè)表中重復(fù)的索引或者主鍵,這款工具可以幫助我們找到重復(fù)的索引并給出建議。
下載地址: https://www.percona.com/downloads/percona-toolkit/LATEST/ ,選擇合適的操作系統(tǒng) 下載。
安裝
[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;更新索引統(tǒng)計(jì)信息
analyze table table_name索引碎片整理
索引在使用的過(guò)程中 會(huì)產(chǎn)生碎片 , 表也在使用的過(guò)程中會(huì)產(chǎn)生碎片
查看 某個(gè)表的 碎片程度
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這個(gè)地方需要注意,閑時(shí)操作。 使用不當(dāng)會(huì)導(dǎo)致鎖表
搞定MySQL
總結(jié)
以上是生活随笔為你收集整理的MySQL-索引优化篇(4)_索引的维护的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySQL-索引优化篇(3)_利用索引优
- 下一篇: MySQL-获取有性能问题SQL的方法_