oracle数据库索引维护
本文仅讨论了甲骨文,这是最常见的指标,B树索引的数据库,本文涉及的版本是Oracle8i。
查看系统表中的用户索引
在oracle中,在安装数据库时自动生成系统表。它包含所有的数据字典、存储过程、包、函数和触发器定义,以及系统回滚段。
一般来说,您应该尽量避免在系统表中存储非系统用户的对象,因此,在数据库维护和管理中存在许多问题,一旦系统表被损坏,数据库只能再生,我们可以使用以下语句检查系统表中是否有其他用户索引。
两。索引存储条件检查
Oracle将逻辑结构空间分配给数据库中的所有数据。数据库空间的单位是数据块(块)、范围(范围)和段(段)。
Oracle数据块(block)是最小的存储单位使用和配置Oracle。它是由db_block_size时设置数据库的建立。一旦生成数据库,数据块的大小是不可以改变的。如果你想改变,你只能重新建立数据库。(有在Oracle9i,有些差异,但这不在本文的范围)。
范围是由一组连续的块组成的,一个或多个范围构成一个段,当一个段中的所有空间用完时,Oracle为它分配了一个新的范围。
U3000
段由一个或多个范围组成,它包含表空间中特定逻辑存储结构的所有数据。段中的范围可以是不连续的,甚至可以是不同的数据文件。
对象只能对应于逻辑存储的一部分,我们可以通过查看段中的范围来查看对应对象的存储。
(1)查看索引段中的区域数:
(2)查看表空间中索引的扩展:
三。索引的选择性
索引的选择性是索引列中不同值的数量与表中记录数的比率。如果表中有2000个记录,而表索引列有1980个不同的值,则索引的选择性为1980 2000=0.99。
指数的选择性越接近1,指数的效率越高。
如果采用基于成本的优化,优化器不应该使用选择索引,如果使用规则优化,优化器在决定执行路径时,除非考虑到唯一索引,否则不会考虑索引选择性,而必须手动优化查询以避免使用非选择性索引。
确定指标的选择性有两种方法:手动测量和自动测量。
(1)人工测量指标的选择性
如果要在表的两列上创建一个两列并列索引,可以使用以下方法来度量索引的选择性:
选择=列不同的值,总的数量大约为1。
如果我们知道其中一列的选择性(例如,主密钥之一),那么我们就可以知道另一列索引的选择性。
手动方法的优点是在索引创建之前可以对索引的选择性进行评估。
(2)自动测量指标的选择性
如果对一个表的分析进行分析,所有表的索引将自动分析。
首先,为了确定一个表的确定性,有必要对表进行分析。
第二,确定索引中不同关键字的个数:
第三,确定表中的行总数:
第四,索引的选择性=索引中的不同关键字的数量/表中的行总数:
第五,你可以查询user_tab_columns理解每柱的选择性。
表中表中所有行的不同值的数目:
在列= num_distinct /表中的所有行数选择。查询user_tab_columns帮助测量各柱的选择性,但它不能准确测量的并列组合柱的选择性。衡量一个列的选择性,你需要使用手动方法或创建基于此列索引和分析表。
四。确定索引的实际片段
随着数据库的使用,将不可避免的基本表,更新和删除,从而导致被删除的叶Zi Xing在指数、破碎化指数,更频繁的表插入的和删除的片段,指数越高。碎片的产生增加了我/ O成本获取和使用索引。该片段的高指标必须重建保持最佳性能。
(1)使用验证索引命令验证索引。
这把有价值的指标信息的index_stats表。
(2)查询index_stats表来确定索引中删除的百分比,在子兴叶无填充。
(3)如果叶指数超过10%件,则考虑指数的重建。
(4)如果索引不为空间或其他考虑而重建,则索引可以被排序。
(5)明确分析信息
{分页}
五。重建索引
(1)检查需要重建的索引。
检查以下方面以确定需要重建的索引。
首先,查看系统表空间中的用户索引。
为了避免数据字典的碎片化,在系统表空间中尽量避免用户的表和索引。
第二,确保用户的表和索引不在同一表空间中。
表和索引对象的第一条规则是分离表和索引。表和相应的索引构建在不同的表空间中,最好是在不同的磁盘上。这避免了在数据管理和查询过程中发生的许多I/O冲突。
第三,查看数据表空间中的索引。
用户的默认表空间不应该是一个系统表空间,而是一个数据表空间。当指数设立时,如果没有指定相应的索引表空间的名称,该指数将建表空间。这是程序员经常忽略的一个问题。相应的索引表空间明确规定,当建立索引。
第四,看哪个索引已经扩展了10次以上
随着表记录的增加,相应的索引也随之增加,如果索引的下一个范围值设置不合理(台晓),索引段的扩展变得非常频繁,索引的范围太大,检索的速度和效率将降低。
(2)在找到需要重建的索引后,需要确定索引的大小以设置合理的索引存储参数。
(3)有足够的剩余空间来确定索引表空间。
确定将索引表空间重建到索引中。确保相应的索引表空间有足够的剩余空间。
(4)重构索引。
在重建索引时,我们应该注意以下几点:
如果A.没有指定表空间名称,则索引将构建在用户的默认表空间中。
如果B.没有指定nologging,日志将被写入,导致速度慢。由于索引重建不需要恢复,所以,你可以不写日志。
如果资源很忙,它显示进程正在使用索引,等待一秒钟提交。
(5)检查指标。
检查重建索引。
(6)根据索引查询,检查索引是否有效。
使用相应的WHERE条件查询以确保使用索引。
然后,根据相应的索引项执行查询。
(6)找出表空间的片段并收集其片段。
重建索引后,删除原始索引,这将导致表空间的碎片。
整理表空间的各个部分。
上一页