今天刚刚知道Oracle有个索引统计的功能,可以统计每个索引的使用次数。作为一个Oracle的门外汉,我还是再次感叹人家做的是真细致。第二个想法就是给MySQL也加上。
Percona版本的information_schema.innodb_index_stats 已经有索引的统计信息,我们就在巨人的肩膀上踩一脚了。
先来看下原来的表结构。
CREATE TEMPORARY TABLE `INNODB_INDEX_STATS` (
`table_schema` varchar(192) NOT NULL DEFAULT '',
`table_name` varchar(192) NOT NULL DEFAULT '',
`index_name` varchar(192) NOT NULL DEFAULT '',
`fields` bigint(21) unsigned NOT NULL DEFAULT '0',
`rows_per_key` varchar(256) NOT NULL DEFAULT '',
`index_total_pages` bigint(21) unsigned NOT NULL DEFAULT '0',
`index_leaf_pages` bigint(21) unsigned NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
|
记录的是每个索引的信息,其中index_total_pages是一个索引的所有page数,index_leaf_pages其中的叶子page数。从这两个数据基本上可以描绘一棵btree的大小了。从其中的比例关系也可以看到为什么亿级别的数据只要三层索引了,这是题外话。
然后我们要作的事情就是在这个“表”加一列,统计索引被使用的次数。其中的信息当然需要在执行时统计。所幸的是InnoDB每次使用索引都是统一的入口(index_read), 就在index里面加个字段统计。如果要精确还得加个锁,不过作为统计信息,也可以不要那么精确,直接累积了,这样对性能就没有影响。
修改后就长这样了。
总共修改代码没有超过10行,看上去还有点儿意思吧 。基于Percona-Server-5.5.8-20.0改的,有在使用这版本的需要patch的可以留下邮箱。
- 大小: 32.3 KB
分享到:
相关推荐
通过对mysql-8.2.0源码的学习和分析,开发者不仅可以了解MySQL的工作原理,还能为优化性能、解决bug或开发新的功能提供基础。此外,对于希望贡献于MySQL社区的开发者来说,源码也是理解并参与开源项目的重要途径。
二、MySQL源码学习 1. 数据存储:MySQL的InnoDB存储引擎是默认引擎,它使用行级锁定和事务支持。了解InnoDB的数据页、记录、事务日志等内部结构对于优化性能至关重要。 2. SQL解析:MySQL通过SQL解析器将输入的SQL...
深入学习MySQL源码,不仅能帮助我们理解数据库内部运作机制,还可以让我们更好地针对特定场景进行定制化开发和性能优化,解决实际问题。例如,通过源码分析,开发者可以了解SQL执行的详细过程,优化查询语句;或者...
深入研究MySQL 5.5.62的源码,可以帮助我们理解数据库系统的设计理念,学习如何实现高效的查询处理、并发控制以及存储机制。这对于数据库管理员、软件开发者和教育工作者来说,都是宝贵的资源。通过分析源码,我们...
解压`mysql-5.7.42`源码包后,你可以探索其内部结构,了解MySQL如何实现这些特性和功能。源码阅读可以帮助开发者理解数据库的内部工作原理,进行二次开发或性能调优。同时,源码也是学习数据库设计、并发控制、事务...
2. **覆盖索引**:如果`OR`操作符连接的条件都在同一个索引的所有列中,那么这个索引被称为覆盖索引,MySQL可以只使用索引来完成查询,而无需回表,这样会提高查询效率。 3. **索引合并(Index Merge)**:MySQL ...
MySQL是一种广泛使用的开源关系型数据库管理系统,其源代码的分析对于深入理解数据库的工作原理、进行定制化开发或优化性能具有重要意义。在MySQL 8.1.0版本中,我们可以探索到许多关键的知识点。 首先,MySQL ...
MySQL是一种广泛使用的开源关系型数据库管理系统,其设计思想是简单、快速和可移植性。它在互联网应用中扮演着至关重要的角色,支持多种操作系统,并且提供了丰富的编程接口,如Java、PHP、Python等。本篇文章将深入...
这个“员工信息管理系统”的源码是一个很好的学习资源,可以深入理解PHP与MySQL的结合使用,以及如何构建一个实际的Web应用。通过研究源码,开发者不仅能提升编程技能,还能了解到实际项目中的最佳实践和常见问题...
12.1.4 访问控制:MySQL如何使用Grant表 12.1.5 更新权限:修改什么时候生效 12.2 提高MySQL数据库的安全性 12.2.1 从操作系统角度来保护MySQL 12.2.2 密码 12.2.3 用户权限 12.2.4 Web问题 12.3 获取更多...
MySQL数据库源码分析 ...通过对MySQL源码的深入学习,你可以掌握数据库设计的底层逻辑,更好地理解和解决数据库中的问题,从而提升系统性能和稳定性。同时,这也为参与MySQL的开发或定制提供了基础。
8. **源码分析**:对于开发人员来说,分析MySQL源码有助于理解其内部工作原理,学习如何设计和实现高性能的数据库系统,以及如何优化SQL查询。 9. **编译与安装**:解压后,用户需要按照指定的步骤编译和安装MySQL...
### MySQL入门知识点详解 #### 一、数据库概述 1. **数据存储方式**: - 数据库是组织、存储和...以上是MySQL入门阶段的一些基础知识点,通过这些内容的学习,可以帮助初学者快速掌握MySQL的基本操作和使用技巧。
在这个名为"MySQL_5.1_zh_MYSQL_源码.zip"的压缩包中,包含的是MySQL 5.1版本的源代码,对于开发者来说,这是一个深入理解MySQL工作原理、学习数据库管理系统设计以及进行二次开发的宝贵资源。 源代码分析: 1. **...
7.4.7. MyISAM索引统计集合 7.4.8. MySQL如何计算打开的表 7.4.9. MySQL如何打开和关闭表 7.4.10. 在同一个数据库中创建多个表的缺陷 7.5. 优化MySQL服务器 7.5.1. 系统因素和启动参数的调节 7.5.2. 调节服务器参数 ...
《人事工资管理系统(C#源码 MySQL)》是一个基于C#编程语言和MySQL数据库技术开发的人力资源管理软件,主要用于企业内部进行员工信息管理和薪资计算。本文将深入探讨该系统的架构、核心功能以及C#与MySQL在其中发挥的...
《基于ThinkPHP+Mysql的进销存管理系统设计与实现》 进销存管理系统是企业日常运营中的核心组成部分,它涵盖了采购、销售、...开发者在学习和使用这个源码时,可以深入理解到Web开发的各个环节,提升自己的专业技能。
在毕业设计中,学习和研究MySQL的源码有助于提升对数据库系统的理解,为未来的职业发展打下坚实基础。 【CSDN:小正太浩二】下载说明.txt CSDN是中国最大的开发者社区之一,提供技术交流、资源下载和学习资料分享...
通过这些源码案例,学习者不仅能够理解PHP和MySQL的基本概念,还能掌握实际操作中的关键技巧,如错误处理、事务处理、预处理语句等。这是一套全面且实用的教程,对于想要在Web开发领域深入学习PHP与MySQL的人来说,...
- 查询优化器改进:使用新的统计信息和优化策略,能更智能地选择执行计划,提高查询速度。 - Partitioning增强:支持更多类型的分区策略,如线性哈希和按范围分区,有助于大数据管理。 - 空间数据类型:增强了对...