今天在网上看到了一个估计索引碎片的方法,所以写了个小过程,对用户下的所有索引进行一次计算,挑选二元高度大于4的或者碎片率大于10%的索引进行输出。 需要说明的是,这种估计索引碎片的方法来自网上,还没有查询官方文档上的相关部分,仅供参考,我不对分析出的结果负责。
我在一些OCP的教材上看到了有关analyze validate的说明,据称可以分析出碎片数,但是现在还没在官方文档上找到确切的证据,希望知道的人给我讲一下,以下是我从官方文档上找到的一些关于analyze validate的说明:
For an index, Oracle Database verifies the integrity of each data block in the index and checks for block corruption. This clause does not confirm that each row in the table has an index entry or that each index entry points to a row in the table. You can perform these operations by validating the structure of the table with the CASCADE clause.
Oracle 验证每一个索引的数据块完整性以及检查block corruption。
declare cursor cur_ind is select ui.index_name from user_indexes ui; ind_name user_indexes.index_name%type; v_name index_stats.name%type; v_height index_stats.height%type; v_percent number; begin dbms_output.enable(10000000000); open cur_ind; loop fetch cur_ind into ind_name; exit when cur_ind%notfound; execute immediate 'analyze index ' || ind_name || ' validate structure'; --分析每个索引 select ist.name, ist.height, round((del_lf_rows / (lf_rows + 0.0000000001)) * 100) into v_name, v_height, v_percent from index_stats ist; if (v_height > 4 or v_percent > 10) then dbms_output.put_line('索引名:' || v_name || ', ' || '高度:' || v_height || ', ' || '百分比:' || v_percent || ', ' || '需要重建'); end if; end loop; close cur_ind; end;
发表评论
-
简介如何查看执行计划以及执行计划的准确性
2012-02-24 20:52 0很多朋友都问过我优化SQL的事情。我觉得在我不 ... -
关于分区表的初探
2012-02-12 00:26 900上周我写了一 ... -
使用WITH提高查询效率
2012-01-15 21:02 1180前两天的业务 ... -
好用的函数sign和decode
2012-01-08 00:11 851今天遇到了一个问题,需要对比一个字段和5的大 ... -
有关LGWR
2011-12-28 21:37 990今天群里有人问关于数据库进程的事情,当然,他对 ... -
安装oracle时还需要修改的几个文件和参数
2011-12-24 23:31 975安装oracle时还需要修改的几个文件和参数: /et ... -
关于oracle的启动
2011-12-24 22:51 640有这么一道题,是关于在实例启动的时候,哪些 ... -
实用语句之一——Oracle建立Database Link
2011-12-18 12:56 897create database link dblink_ ... -
Oracle控制文件的一点研究
2011-12-13 23:15 681控制文件是非常重要的文件,实例读取控制文件才 ... -
SQL语句的执行过程
2011-12-13 21:20 815服务器接收到SQL语句之后,要经过如下步骤完成操作:P ... -
OCP题库笔记1z0-052
2011-12-12 23:24 11191 关于undo 数据库可以有一个以上的undo表空间; ... -
有关nologging和append提高插入效率的研究
2011-12-11 10:39 2121那天接到一个事情,我们的数据库表空间已经快用完 ... -
索引不可用的情况
2011-12-11 10:35 748有一天我遇到了一个同事的求助,他让我帮忙优化一个SQ ... -
如何理解oracle实例(instance)和数据库(database)的概念
2011-12-11 10:34 737今天群里有朋友问什么是instance,什么是data ...
相关推荐
`sys.dm_db_index_physical_stats`动态管理视图提供索引碎片的详细信息。当`avg_fragmentation_in_percent`大于或等于30%时,通常建议重建索引。重建索引的命令示例给出了如何针对特定表的所有索引执行此操作。 4. ...
当一个表空间内的空闲空间分布过于分散时,新插入的数据可能会被放置在远离已有序列的位置上,这就形成了碎片。具体来说,碎片可以分为以下几种类型: 1. **自由空间碎片(Free Space Fragmentation)**:指的是表...
DBA可以通过执行特定的SQL脚本来计算FSFI值,以此判断是否需要进行碎片整理。 4. 自由范围的碎片整理 - 设置pctincrease:将表空间的默认存储参数pctincrease设置为非0值,例如1,可以帮助在段扩展时更均匀地分配...
3. **analyze5pct.sql**:这是一个快速分析表和索引的脚本,使用5%的采样大小。通过调用`dbms_utility.analyze_schema`过程,可以估算表和索引的统计信息,而无需全量分析,从而节省时间。但请注意,如果正在进行...
在给定的部分内容中,我们首先看到了一个 SQL 脚本,用于评估表空间的存储效率。这个脚本通过计算表的实际使用空间与分配空间的比例来确定表是否被有效地使用。 **脚本解读**: ```sql SELECT TABLE_NAME, (BLOCKS...
2. **计算碎片率**:利用`(sum(free)*100/sum(bytes))`计算表空间的碎片率,其中`sum(free)`表示总的空闲空间,`sum(bytes)`表示总的分配空间。 3. **结果解读**:当计算得到的百分比小于30时,表明该表空间存在较高...
自由范围的碎片计算可以使用FSFI(Free Space Fragmentation Index,自由空间碎片索引)值来直观体现。FSFI值可以用来计算碎片程度,Formula:FSFI=100*SQRT(max(extent)/sum(extents))*1/SQRT(SQRT(count(extents))...
在SQL Server 2008 R2中,重建索引是一项重要的维护任务,它有助于优化数据库性能,尤其是当数据经过频繁的插入、删除和更新操作后,可能导致索引碎片增加。索引碎片有两种类型:逻辑碎片(页顺序不连续)和物理碎片...
为了确定一个表是否存在碎片问题,可以通过以下步骤来进行检查: 1. **收集表统计信息**:首先,需要确保表的统计信息是最新的。这可以通过执行`exec dbms_stats.gather_table_stats(ownname=>'SCHEMA_NAME', ...
可以使用DBA_FREE_SPACE视图来查询各个表空间的空闲空间分布情况,通过编写SQL脚本计算FFSI值,以监控和评估碎片程度。 总的来说,Oracle数据库的碎片整理是数据库管理的重要环节,定期进行碎片整理和预防措施能...
以下是一个简单的SQL脚本示例,用于计算各个表空间的FSFI值: ```sql COLUMN FSFI FORMAT 999,99 SELECT tablespace_name, SQRT(MAX(blocks) / SUM(blocks)) * (100 / SQRT(SQRT(COUNT(blocks)))) AS FSFI FROM ...
在描述中提到的脚本是一个自动化维护索引的T-SQL语句,其目的是检查和优化那些碎片化程度超过10%的索引。首先,脚本设置了变量,如`@objectid`, `@indexid`, `@partitioncount`等,用于存储索引的相关信息。接着,它...
- **功能介绍**:`winchat` 是 Windows XP 自带的一个聊天应用程序,允许用户通过局域网进行聊天。 - **应用场景**:主要用于局域网内的即时通讯。 #### Mem.exe - **功能介绍**:`mem.exe` 显示内存使用情况,包括...
14. **mmc**: Microsoft Management Console,提供一个框架来集成和管理各种系统管理工具。 15. **mobsync**: 同步命令,通常用于同步文件或设备之间的数据。 16. **dxdiag**: 检查DirectX相关信息,如显卡和声卡...
索引的名称只能包含小写字母,且在一个集群中可以有任意多个索引。类型(Type)则类似于数据库中的表,可以在索引中定义多个类型,通常一个 Type 包含了相同属性的数据集合。 文档(Document)是数据的基本存储单元...
Wscript命令:Windows脚本宿主设置,用于运行脚本文件。 Write命令:写字板,用于快速编辑文本文件。 Winmsd命令:系统信息,用于查看计算机的硬件和软件信息。 Wiaacmgr命令:扫描仪和照相机向导,用于设置和...
`wscript`则涉及脚本执行,用户可以通过它配置和运行Windows脚本主机,实现自动化任务。 `write`是Windows内置的简单文本编辑器,而`winmsd`用来显示系统详细信息,包括硬件配置、性能指标等。`wiaacmgr`是扫描仪和...
该命令用于打开当前用户的临时文件夹,这是一个存储应用程序运行时创建的临时文件的地方。通过这个命令,用户可以清理不再需要的临时文件,释放磁盘空间。 ### 2. access.cpl 此命令打开辅助功能选项,允许用户调整...
填充因子自述文件 在这个文件夹中有两个 TSQL 脚本。 FillFactorIndexSetup.sql... 第 1 部分附带的脚本中有一个拼写错误,并且已经按照上述方式进行了演变。 在这个文件夹中还有我在 5 月 13 日所做的 GroupBy PowerP
如何计算数据块中某个字段的位置优化小技巧 如何计算索引块中某个字段的位置优化小技巧 自己动手写一个dul优化小技巧 bootstrap$的访问优化小技巧 unloadBlock函数优化小技巧 unloadRow函数5月29日 突破困局优化小...