`
丁林.tb
  • 浏览: 794783 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL源码学习:索引使用统计功能

阅读更多

今天刚刚知道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
4
4
分享到:
评论
3 楼 幕南风 2014-03-18  
hi 丁林  能把这个patch发给我吗?  linwaterbin@gmail.com   :-)
2 楼 rj03hou 2011-07-19  
rj03hou/gmail/com谢谢
1 楼 napoleonu 2011-07-04  
napoleonu/gmail/com 谢谢了,虽然没再用,但是想看看。

相关推荐

    mysql源码(mysql-8.2.0.tar.gz)

    通过对mysql-8.2.0源码的学习和分析,开发者不仅可以了解MySQL的工作原理,还能为优化性能、解决bug或开发新的功能提供基础。此外,对于希望贡献于MySQL社区的开发者来说,源码也是理解并参与开源项目的重要途径。

    MySQL常规使用以及源码学习记录.zip

    二、MySQL源码学习 1. 数据存储:MySQL的InnoDB存储引擎是默认引擎,它使用行级锁定和事务支持。了解InnoDB的数据页、记录、事务日志等内部结构对于优化性能至关重要。 2. SQL解析:MySQL通过SQL解析器将输入的SQL...

    高性能mysql源码.rar

    深入学习MySQL源码,不仅能帮助我们理解数据库内部运作机制,还可以让我们更好地针对特定场景进行定制化开发和性能优化,解决实际问题。例如,通过源码分析,开发者可以了解SQL执行的详细过程,优化查询语句;或者...

    Mysql 5.5.62数据库源码

    深入研究MySQL 5.5.62的源码,可以帮助我们理解数据库系统的设计理念,学习如何实现高效的查询处理、并发控制以及存储机制。这对于数据库管理员、软件开发者和教育工作者来说,都是宝贵的资源。通过分析源码,我们...

    mysql-5.7版本源码包

    解压`mysql-5.7.42`源码包后,你可以探索其内部结构,了解MySQL如何实现这些特性和功能。源码阅读可以帮助开发者理解数据库的内部工作原理,进行二次开发或性能调优。同时,源码也是学习数据库设计、并发控制、事务...

    mysql中or是否走索引详解

    2. **覆盖索引**:如果`OR`操作符连接的条件都在同一个索引的所有列中,那么这个索引被称为覆盖索引,MySQL可以只使用索引来完成查询,而无需回表,这样会提高查询效率。 3. **索引合并(Index Merge)**:MySQL ...

    mysql源码(mysql-8.1.0.zip)

    MySQL是一种广泛使用的开源关系型数据库管理系统,其源代码的分析对于深入理解数据库的工作原理、进行定制化开发或优化性能具有重要意义。在MySQL 8.1.0版本中,我们可以探索到许多关键的知识点。 首先,MySQL ...

    MySQL是怎样运行的(仅限学习使用)

    MySQL是一种广泛使用的开源关系型数据库管理系统,其设计思想是简单、快速和可移植性。它在互联网应用中扮演着至关重要的角色,支持多种操作系统,并且提供了丰富的编程接口,如Java、PHP、Python等。本篇文章将深入...

    PHP+mysql +系统源码

    这个“员工信息管理系统”的源码是一个很好的学习资源,可以深入理解PHP与MySQL的结合使用,以及如何构建一个实际的Web应用。通过研究源码,开发者不仅能提升编程技能,还能了解到实际项目中的最佳实践和常见问题...

    PHP和MySQL Web开发第4版pdf以及源码

    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 获取更多...

    03-MySQL数据库源码

    MySQL数据库源码分析 ...通过对MySQL源码的深入学习,你可以掌握数据库设计的底层逻辑,更好地理解和解决数据库中的问题,从而提升系统性能和稳定性。同时,这也为参与MySQL的开发或定制提供了基础。

    MySQL-5.7.24源码包,包含boost库

    8. **源码分析**:对于开发人员来说,分析MySQL源码有助于理解其内部工作原理,学习如何设计和实现高性能的数据库系统,以及如何优化SQL查询。 9. **编译与安装**:解压后,用户需要按照指定的步骤编译和安装MySQL...

    MySQL入门很简单-学习笔记.pdf

    ### MySQL入门知识点详解 #### 一、数据库概述 1. **数据存储方式**: - 数据库是组织、存储和...以上是MySQL入门阶段的一些基础知识点,通过这些内容的学习,可以帮助初学者快速掌握MySQL的基本操作和使用技巧。

    MySQL_5.1_zh_MYSQL_源码.zip

    在这个名为"MySQL_5.1_zh_MYSQL_源码.zip"的压缩包中,包含的是MySQL 5.1版本的源代码,对于开发者来说,这是一个深入理解MySQL工作原理、学习数据库管理系统设计以及进行二次开发的宝贵资源。 源代码分析: 1. **...

    人事工资管理系统(C#源码 MySQL)

    《人事工资管理系统(C#源码 MySQL)》是一个基于C#编程语言和MySQL数据库技术开发的人力资源管理软件,主要用于企业内部进行员工信息管理和薪资计算。本文将深入探讨该系统的架构、核心功能以及C#与MySQL在其中发挥的...

    商品销售管理系统 C#源码 MySQL例子

    在提供的"商品销售管理系统(C#源码 MySQL)"压缩包中,"说明.txt"文件可能包含了系统部署、运行和使用的详细指南,而源代码文件则提供了完整的实现细节,供开发者学习和参考。 总的来说,这个商品销售管理系统实例...

    PHP与MySQL入门到精通源码案例教程.zip

    通过这些源码案例,学习者不仅能够理解PHP和MySQL的基本概念,还能掌握实际操作中的关键技巧,如错误处理、事务处理、预处理语句等。这是一套全面且实用的教程,对于想要在Web开发领域深入学习PHP与MySQL的人来说,...

    mysql5.5下载

    - 查询优化器改进:使用新的统计信息和优化策略,能更智能地选择执行计划,提高查询速度。 - Partitioning增强:支持更多类型的分区策略,如线性哈希和按范围分区,有助于大数据管理。 - 空间数据类型:增强了对...

    MySQL数据库字典.zip

    在毕业设计中,学习和研究MySQL的源码有助于提升对数据库系统的理解,为未来的职业发展打下坚实基础。 【CSDN:小正太浩二】下载说明.txt CSDN是中国最大的开发者社区之一,提供技术交流、资源下载和学习资料分享...

    mysql-5.6.17.tar.gz

    1. **解压源码**:首先,需要将"mysql-5.6.17.tar.gz"这个压缩包解压,通常使用`tar -zxvf mysql-5.6.17.tar.gz`命令。 2. **编译配置**:进入解压后的目录,运行`./configure`进行配置,根据系统环境选择必要的...

Global site tag (gtag.js) - Google Analytics