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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: MySQL-索引优化篇(4)_索引的维护

20200129003012618.png


生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试

官方文档

https://dev.mysql.com/doc/


20200131202811239.png


如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html

20200131203226295.png


删除重复索引

举个例子 ,对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/ ,选择合适的操作系统 下载。


20200202171225401.png

安装

[root@artisan ~]# yum -y install percona-toolkit-3.1.0-2.el7.x86_64.rpm


20200202173354378.png


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

用法

[root@artisan ~]# pt-duplicate-key-checker  --host=192.168.18.131 --user='root' --password='arti


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


查找未被使用的索引

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;


20200202172213423.png



更新索引统计信息

analyze table table_name


索引碎片整理

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

查看 某个表的 碎片程度

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;


整理

optimize table table_name


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


搞定MySQL


https://artisan.blog.csdn.net/article/details/104146374?spm=1001.2014.3001.5502

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
22天前
|
存储 关系型数据库 MySQL
阿里面试:为什么要索引?什么是MySQL索引?底层结构是什么?
尼恩是一位资深架构师,他在自己的读者交流群中分享了关于MySQL索引的重要知识点。索引是帮助MySQL高效获取数据的数据结构,主要作用包括显著提升查询速度、降低磁盘I/O次数、优化排序与分组操作以及提升复杂查询的性能。MySQL支持多种索引类型,如主键索引、唯一索引、普通索引、全文索引和空间数据索引。索引的底层数据结构主要是B+树,它能够有效支持范围查询和顺序遍历,同时保持高效的插入、删除和查找性能。尼恩还强调了索引的优缺点,并提供了多个面试题及其解答,帮助读者在面试中脱颖而出。相关资料可在公众号【技术自由圈】获取。
|
5天前
|
SQL 关系型数据库 MySQL
MySQL慢查询优化、索引优化、以及表等优化详解
本文详细介绍了MySQL优化方案,包括索引优化、SQL慢查询优化和数据库表优化,帮助提升数据库性能。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
MySQL慢查询优化、索引优化、以及表等优化详解
|
1天前
|
SQL 关系型数据库 MySQL
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
MySQL慢查询优化、索引优化,是必知必备,大厂面试高频,本文深入详解,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试官:聊下 MySQL 慢查询优化、索引优化?
|
10天前
|
缓存 监控 关系型数据库
如何优化MySQL查询速度?
如何优化MySQL查询速度?【10月更文挑战第31天】
32 3
|
12天前
|
缓存 关系型数据库 MySQL
如何优化 MySQL 数据库的性能?
【10月更文挑战第28天】
34 1
|
19天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:百万级数据统计优化实践
【10月更文挑战第21天】 在处理大规模数据集时,传统的单体数据库解决方案往往力不从心。MySQL和Redis的组合提供了一种高效的解决方案,通过将数据库操作与高速缓存相结合,可以显著提升数据处理的性能。本文将分享一次实际的优化案例,探讨如何利用MySQL和Redis共同实现百万级数据统计的优化。
51 9
|
13天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
69 1
|
19天前
|
NoSQL 关系型数据库 MySQL
MySQL与Redis协同作战:优化百万数据查询的实战经验
【10月更文挑战第13天】 在处理大规模数据集时,传统的关系型数据库如MySQL可能会遇到性能瓶颈。为了提升数据处理的效率,我们可以结合使用MySQL和Redis,利用两者的优势来优化数据查询。本文将分享一次实战经验,探讨如何通过MySQL与Redis的协同工作来优化百万级数据统计。
45 5
|
24天前
|
存储 关系型数据库 MySQL
如何在MySQL中进行索引的创建和管理?
【10月更文挑战第16天】如何在MySQL中进行索引的创建和管理?
49 1
|
24天前
|
存储 关系型数据库 MySQL
优化 MySQL 的锁机制以提高并发性能
【10月更文挑战第16天】优化 MySQL 锁机制需要综合考虑多个因素,根据具体的应用场景和需求进行针对性的调整。通过不断地优化和改进,可以提高数据库的并发性能,提升系统的整体效率。
39 1