【INDEX】重建索引的两条参考依据

简介: 如果是OLTP系统,存在正大量的删除和更新操作的系统中,日积月累,索引将会千疮百孔,使用索引用来检索数据的效率会急转直下。因此要求我们定期的对索引进行维护,我们可以使用DROP/CREATE方式或REBUILD方式完成索引的重建,恢复索引应该有的效率。问题来了,什么时候需要重建?重建索引的依据是什么呢?有两个依据可供参考。第一个是,查看索引的“高度”,如果索引树高超过了4我们就需要重点关注;另外一个参考依据是,索引条目被删除的数据占总索引条目的百分比如果超过了20%,一般在这种情况下就要考虑重建索引。如果获得这两个参考依据?方法其实很简单,我们仅需对索引进行一下分析,然后通过IND

如果是OLTP系统,存在正大量的删除和更新操作的系统中,日积月累,索引将会千疮百孔,使用索引用来检索数据的效率会急转直下。因此要求我们定期的对索引进行维护,我们可以使用DROP/CREATE方式或REBUILD方式完成索引的重建,恢复索引应该有的效率。

问题来了,什么时候需要重建?重建索引的依据是什么呢?

有两个依据可供参考。第一个是,查看索引的“高度”,如果索引树高超过了4我们就需要重点关注;另外一个参考依据是,索引条目被删除的数据占总索引条目的百分比如果超过了20%,一般在这种情况下就要考虑重建索引。

如果获得这两个参考依据?方法其实很简单,我们仅需对索引进行一下分析,然后通过INDEX_STATS视图辅助分析即可。拿一个具体的例子看一下。

1.分析索引
nt5beijing@bidb> analyze index SALES_INFO_IDX validate structure;

Index analyzed.

2.得出重建索引的判断依据
nt5beijing@bidb> select HEIGHT,(DEL_LF_ROWS/LF_ROWS)*100 from index_stats;

HEIGHT (DEL_LF_ROWS/LF_ROWS)*100

     4                .312030747

通过这样一条简单的SQL语句便可以给出我们两条重要的重建卖手机号码平台索引的依据。

3.根据上面的统计结果有何结论?重建索引?不重建索引?
答案是:不一定!
重建的理由:此处我们看到,该索引的高度已经突破了4,可以考虑重新创建一下该索引。
不重建的理由:从删除的索引叶子的数据与索引叶子总条数的比例上看远远的小于20%,此时不到1%。

这种现象多见于数据仓库类系统。需要酌情对此类索引进行调整。

4.关于INDEX_STATS的参考
请参考《【索引】使用索引分析快速得到索引的基本信息》

5.小结
本文并没有给出索引重建的金科玉律,没有一成不变的法则,一切都是参考信息,具体定夺的人是自己。
在生产环境中如果考虑对索引进行维护,往往考虑的因素很多,在这些参考依据的基础上还要考虑是否有充足的维护窗口,是否可以容忍在索引维护期间系统出现的锁等待问题。是采用DROP/CREATE方式还是REBUILD方式也要具体场景具体分析。

Good luck.

secooler
10.06.30

-- The End --

目录
相关文章
|
编译器 程序员 C++
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!
698 0
2023-4-6-C++11、C++14、C++17、C++20版本新特性系统全面的学习!(二)
|
11月前
|
存储 资源调度 Java
计算机基础(1)——计算机体系结构和组成
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 在过去的几十年里,计算机科学经历了令人瞩目的飞速发展。经历了电子管、晶体管、集成电路的世代发展,体积越来越小、性能越来越强,为人类带来了巨大的便利和变革,下面我们来回顾计算机的发展历程。
3341 5
计算机基础(1)——计算机体系结构和组成
|
机器学习/深度学习 存储 算法
NumPy 与 SciPy:Python 科学计算库的比较
【8月更文挑战第30天】
717 5
|
9月前
|
JSON 人工智能 前端开发
前端开发中使用whistle代理工具
Whistle是一款强大的代理工具,相比Charles、Fiddler更轻量且功能丰富。它适用于前端开发中的多种场景,如接口数据Mock、接口代理、静态资源代理等。通过简单的规则配置,可将接口指向本地JSON文件,解决跨域问题,或代理静态资源以满足特定域名访问需求。此外,Whistle还支持本地端口间转发与移动端请求抓包,搭配SwitchyOmega插件使用效果更佳。需注意,使用前请确保已安装Node环境并参考官方文档完成基础配置。
|
并行计算 PyTorch Linux
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
大概率(5重方法)解决RuntimeError: CUDA out of memory. Tried to allocate ... MiB
10249 0
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:自动编码器(Autoencoder)
使用Python实现深度学习模型:自动编码器(Autoencoder)
806 0
|
安全 编译器 C语言
一文讲清楚内联函数 inline
在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。
|
缓存 JavaScript 测试技术
Vue 3实战:打造交互丰富的任务管理应用
Vue 3实战:打造交互丰富的任务管理应用
378 0
|
编解码
一文带你了解 嵌入式Typec 接口切换开关
一文带你了解 嵌入式Typec 接口切换开关
444 0
|
分布式计算 Hadoop Java
hbase_异常_05_End of File Exception between local host is: "rayner/127.0.1.1"; destination host is: "localhost":9000;
一、异常信息 java.io.EOFException: End of File Exception between local host is: "ubuntu/127.0.1.1"; destination host is: "localhost":9000; : java.
4690 0