首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MySQL-索引优化篇(4)_索引的维护

MySQL-索引优化篇(4)_索引的维护

作者头像
小小工匠
发布于 2021-08-17 11:14:17
发布于 2021-08-17 11:14:17
6850
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

官方文档

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 建立了多个索引 ,重复索引

代码语言:javascript
复制
primary key(id) 【主键索引】, unique key(id) 【唯一索引】, index(id)【普通索引】

主键上MySQL会自动创建索引的,所以就么有必要再对主键建立 唯一索引,更没有必要建立普通索引了。


删除冗余索引

举个例子

index(a) , index(a,b) 在a上建立普通索引 , 在a 、b 建立了联合索引。

这种情况是冗余的, 只需要保存 那个联合索引中就行了,删除 对a 单独建立的普通索引即可。

因为 a 都在左侧, 所以 查询a, 也是可以走那个联合索引的。


代码语言:javascript
复制
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/ ,选择合适的操作系统 下载。

安装

代码语言:javascript
复制
[root@artisan ~]# yum -y install percona-toolkit-3.1.0-2.el7.x86_64.rpm

位于 : /usr/bin/pt-duplicate-key-checker

用法

代码语言:javascript
复制
[root@artisan ~]# pt-duplicate-key-checker  --host=192.168.18.131 --user='root' --password='artisan'  --databases=artisan

更多用法 pt-duplicate-key-checker --help


查找未被使用的索引

代码语言:javascript
复制
SELECT
	OBJECT_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
WHERE
	INDEX_NAME IS NOT NULL
AND COUNT_STAR = 0
ORDER BY
	OBJECT_SCHEMA,
	OBJECT_NAME;

更新索引统计信息

代码语言:javascript
复制
analyze table table_name

索引碎片整理

索引在使用的过程中 会产生碎片 , 表也在使用的过程中会产生碎片

查看 某个表的 碎片程度

代码语言:javascript
复制
SELECT
	ROW_FORMAT,
	TABLE_ROWS,
	DATA_LENGTH,
	INDEX_LENGTH,
	MAX_DATA_LENGTH,
	DATA_FREE,
	ENGINE
FROM
	information_schema.`TABLES`
WHERE
	TABLE_SCHEMA = 'SAKILA'
AND TABLE_NAME = 'ACTOR'
LIMIT 1;

整理

代码语言:javascript
复制
optimize table table_name 

这个地方需要注意,闲时操作。 使用不当会导致锁表

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 官方文档
  • 删除重复索引
  • 删除冗余索引
  • 检查重复和删除的索引 pt-duplicate-key-checker
  • 查找未被使用的索引
  • 更新索引统计信息
  • 索引碎片整理
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档