oracle 索引重组

 在一个不稳定的表上建索引会影响性能,一个索引block只有完全空时才能进入free list,即使一个索引block里只含有一个条目,它也必须被维护,因此索引需要进行阶段性的重建。

 

1、检查索引是否需要重组
    A、收集一个index的使用统计
    ANALYZE INDEX acct_no_idx VALIDATE STRUCTURE;
    B、查看收集的统计数据
    SELECT NAME,(DEL_LF_ROWS_LEN/LF_ROWS_LEN) * 100 AS index_usage FROM index_stats;

    Column Description
    LF_ROWS Number of values currently in the index
    LF_ROWS_LEN Sum in bytes of the length of all values
    DEL_LF_ROWS Number of values deleted from the index
    DEL_LF_ROWS_LEN Length of all deleted values

    C、如果浪费超过20%则索引需要重建
    ALTER INDEX acct_no_idx REBUILD;
    D、或者对索引进行整理
    Alter index acct_no_idx coalesce;

 2、标记未使用的索引
    A、 开始监测索引的使用
    Alter index hr.emp_name_ix monitoring usage;
    B、 停止监测索引的使用
    Alter index hr.emp_name_ix nomonitoring usage;
    C、 查询索引的使用情况
    Select index_name,used from v$object_usage;
    删除未使用过的索引,可以降低DML操作的成本,从而提升系统性能。

    为了尽可能经济的利用block,应对存在较多空block、镜像行的表进行重建,对建立不稳定表上的索引应有规律的进行重建,并尽可能创建本地管理的表空间。

 

你可能感兴趣的:(oracle,C++,c,C#)