mysql 强制使用索引_快速找出MySQL数据库冗余索引和未使用索引

冗余索引和未使用索引的危害

c6e5183cb654a4c55b189c36ef34664a.png

随着上线的业务越来越多,在MySQL数据库中建的表也会越来越多,为提高查询访问速度,会创建相应的索引。但是由于技术人员的水平参差不齐,业务下线,代码逻辑变更等原因,导致线上数据库会有冗余索引或者从未使用的索引存在,这些索引不仅消耗大量的磁盘空间,而且还会影响数据库的insert,update性能,因此作为数据库管理人员,需要及时发现这些冗余索引和未使用索引,并及时清理。

冗余索引和未使用索引定位

要找出线上数据库的冗余索引和未使用索引,使用工具,会让你事半功倍,例如percona-toolkits工具集就提供pt-duplicate-key-checker和pt-index-usage就能非常方便找出数据库的冗余索引和未使用索引。

55d69cf4429c9edc1278757532b7d316.png

在MySQL5.7的版本sys模式下,schema_redundant_indexes和schema_unused_indexes两个视图,更方便直接的展示,个人感觉比pt-duplicate-key-checker和pt-index-usage的方便和准确。

下面就来具体查看一下相关信息。

找重复索引,并提供drop index语句

mysql> select * from schema_redundant_indexesG;*************************** 1. row ***************************              table_schema: sbtest                table_name: sbtest1      redundant_index_name: k_1   redundant_index_columns: kredundant_index_non_unique: 1       dominant_index_name: idx_sbtest1_k    dominant_index_columns: k dominant_index_non_unique: 1            subpart_exists: 0            sql_drop_index: ALTER TABLE `sbtest`.`sbtest1` DROP INDEX `k_1`*************************** 2. row ***************************              table_schema: sbtest                table_name: sbtest1      redundant_index_name: idx_sbtest1_id_k   redundant_index_columns: id,kredundant_index_non_unique: 1       dominant_index_name: PRIMARY    dominant_index_columns: id dominant_index_non_unique: 0            subpart_exists: 0            sql_drop_index: ALTER TABLE `sbtest`.`sbtest1` DROP INDEX `idx_sbtest1_id_k`

在这里确认一下,这个视图找出来的重复index是否准确,看看sbtest.sbtest1的表结构

mysql> show create table sbtest.sbtest1G;*************************** 1. row ***************************       Table: sbtest1Create Table: CREATE TABLE `sbtest1` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `k` int(10) unsigned NOT NULL DEFAULT '0',  `c` char(120) NOT NULL DEFAULT '',  `pad` char(60) NOT NULL DEFAULT '',  PRIMARY KEY (`id`),  KEY `k_1` (`k`),  KEY `idx_sbtest1_id_k` (`id`,`k`),  KEY `idx_sbtest1_k` (`k`)) ENGINE=InnoDB AUTO_INCREMENT=5000001 DEFAULT CHARSET=utf8 MAX_ROWS=10000001 row in set (0.00 sec)

k_1,idx_sbtest1_id_k,idx_sbtest1_k三个索引确实是冲突了,系统建议保留idx_sbtest1_k这个索引。

b64eb228325ce545126f2d30ebdfa878.png

来定位未使用索引

mysql> select * from schema_unused_indexes;+---------------+-------------+--------------------+| object_schema | object_name | index_name         |+---------------+-------------+--------------------+| sbtest        | sbtest1     | k_1                || sbtest        | sbtest1     | idx_sbtest1_id_k   || sbtest        | sbtest1     | idx_sbtest1_k      || sbtest        | t_pay_test  | k_1                || sbtest        | t_pay_test  | idx_t_pay_test_k_c |+---------------+-------------+--------------------+5 rows in set (0.00 sec)

删除未使用索引时,需要注意一下,建议每个月都获取一次,如果连续3个月都没有使用,可以删除掉。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502874.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java第一次课必修实验答案,Java第一次实验报告

北京电子科技学院(BESTI)实验报告课程:Java实验 班级:201352 姓名:池彬宁 学号:20135212成绩: 指导教师:娄佳鹏 实验日期:15.04.14实验密级: 预习程度…

python实现目标识别_Python10行代码实现目标检测

ImageAI可以让程序员和软件开发者只用几行代码,就能轻易地把最先进的计算机视觉技术整合到他们现有的以及新的应用程序里面。用ImageAI实现目标检测,你只需要以下步骤:安装Python安装ImageAI和相关函数库下载目标检测模型文件运行示例代码(只…

在matlab中求协方差,matlab里面的求协方差函数

一:matlab里面关于方差和协方差的几点需要注意的求均值的函数:mean求方差的函数:var标准差:方差:求协方差的函数:cov1 如果a,b是向量,则:cov(a,b)相当于是[D(a),cov(a,b);cov(b,a),D…

python做var模型_【Python金融量化】VaR系列(五):Copula模型估计组合VaR-阿里云开发者社区...

1. 资产组合VaR建模方法回顾文章中总结了通过DCC模型估计组合向前一日VaR的方法,整体思路如下:● 通过Garch族模型估计各资产的波动率● 通过DCC模型估计各资产间的相关系数,结合1得到资产组合的协方差矩阵● 在各资产正态性假设的前提下&…

matlab从矩阵中取rp开头文件,matlab trainrp

Af ] train(net, P,T, Pi, Ai,VV ,TV ) 3 [Y, Pf , Af , E, perf ] sim(net, P, Pi, Ai,T ) {tansig,purelin},trainrp BP lr......traingdm、traingda、 traingdx 、 trainrp 、 ...traingdm traingda traingdx trainrp train...{tansig,purelin},trainrp BP 网络的训练函数 训…

手机浏览器网址_「效率集」自定义网址导航高级功能介绍

「效率集」是国内仅有的几家提供了个性自定义导航的网站,功能比hao123强,用户体验优于百度导航首页,且支持聚合搜索,方便用户从不同渠道(网页,微博,微信公众号,知乎,维基…

属于服务器端运行的程序_生信分析云平台产品开发 - 5 生信分析pipeline服务器端运行...

在上文 [生信分析云平台产品开发 - 4 生信分析pipeline的图形化] 讨论了生信分析pipeline的图形化,如何用图形的方式显示生信pipeline,但是pipeline脚本按照变量的形式保存之后,如何运行,在什么环境下运行?是本文要解决…

c mysql 统计不重复数据库,MySQL_MySQL数据库中分组统计的问题,首先准备四张表A、B、C、D, - phpStudy...

MySQL数据库中分组统计的问题首先准备四张表A、B、C、D,--------------------------------A  | B  | C  | Da b | a c | a d | d e1 1 | 1 1 | 1 A | A 12 2 | 1 3 | 2 B | B 23 4 | …

TF卡里删掉文件后内存没变大_原来三星手机是这样清理内存的,难怪用好几年也不卡...

三星手机的耐用性一直都很高,而除了手机本身系统性能做的很好之外,手机的设置也是很人性化的。在三星手机使用了一段时间过后,手机里的内存会越来越大,手机里的垃圾也会越存越多,那么我们应该怎么清理手机中的内存呢&a…

拓扑排序排课系统_视频结构化人脸布控系统

一、平台背景在国家智慧城市的建设中的公共安全,对维稳防控、全城布控、预测预警、综合管理等提出了更高需求,针对这些需求我们作为识别领域的领先者,结合我们的识别技术,更全面、更智能提出了我们视频结构化黑名单布控系统解决方…

php数组转ini文件,php – 将数组转换为.ini文件

为了编写.ini文件,你需要创建自己的函数,因为除了阅读之外,PHP没有提供开箱即用的功能(可以在这里找到:http://php.net/manual/pl/function.parse-ini-file.php).可能将多维数组封装到.ini-syntax兼容字符串的函数示例可能如下所示:function arr2ini(arr…

win10去掉快捷方式小箭头_简单几步,教你怎么去掉win10电脑图标小箭头

Windows通过在桌面图标上增加“小箭头”,来区分它是属于正经的应用程序、文件还是快捷方式。好处能够一目了然的区分桌面显示的内容都是什么。坏处就是对有强迫症、要求统一的用户来说,这个小箭头实在是太碍眼了!如果你属于后者,注…

python整形怎么切片_python 切片操作 slice

列表切片:list [start_index, end_index, step] step可正可负,为正时表示从左往右取,为负时表示从右往左取步长-1:表示从右往左取,开始1,结束3,表示从左往右取,两个互相矛盾&#x…

php实现双向队列详解,PHP实现一个双向队列例子

deque,全名double-ended queue,是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双向队列(双端队列)就像是一个队列,但是你可以在任何一端添加或移除元素。双端队列(de…

CIF进口货物流程图_上海关区对外承包工程货物进口报关公司【清关代理吧】

进口清关:退运/返修/一般贸易/对外承包工程专业、专心、专注提供服务上海港/上海海关:对外承包工程进口清关报关有需要看左边:←←←←←←←进口清关报关要注意哪些问题:(同行禁止抄袭及转载)首先:要找一家靠谱、值得…

月均数据_程序员月均薪多少,2019全国互联网行业程序员就业大数据报告

《2019全国互联网行业程序员就业大数据报告》,该报告针对程序员画像、专业背景、职能供需分布、城市分布特征和薪资优势等方面进行分析。作者:子瑜说IT下面,一起来看看,2019年1月-9月程序员的就业现状。01、程序员基础画像“程序媛…

php json 循环输出html,我要用js从json文件中取值,并输出的html页面,有个问题

json文件有多个 0.json 1.json 2.json 3.json ...现在的情况是js可以挨个读取json文件中的内容,但是每次读取新文件的时候之前的文件内容就没了,我想要加载新json文件内容时,保留之前的读出来的内容求大神!!&#xff0…

单分支 两路分支和多分支的if结构_JavaScript学习笔记(二)-- 分支结构

分支结构我们的 js 代码都是顺序执行的(从上到下)逻辑分支就是根据我们设定好的条件来决定要不要执行某些代码IF 条件分支结构if 语句通过一个 if 语句来决定代码执行与否a语法: if (条件) { 要执行的代码 }通过 () 里面的条件是否成立来决定…

php 时间格式化_3分钟短文 | PHP获取函数的代码片段,唯有反射最高效

引言为了演示上一篇我们所说的PHP中反射的应用,本篇接着讲反射的应用。因为其特性,是操作函数和方法的,是函数的操作者,类的操作者,所以显得格外重要。我们从一个小需求出发,假如有一段这样的代码&#xff…

文本解析 python 多行,关于python:基于文本的数据格式,支持多行字符串

我搜索支持多行字符串的基于文本的数据格式。JSON不允许多行字符串:>>> import json>>> json.dumps(dict(textfirst linesecond line)){"text":"first line\second line"}我想要的输出:{"text":"f…