zoukankan      html  css  js  c++  java
  • index

    1、查看当前schema下表中索引名称对应信息

    SQL> select index_name,table_name from user_indexes;
    
    INDEX_NAME                     TABLE_NAME
    ------------------------------ ------------------------------
    MYC_IDX                        MYCLUSTER
    SYS_C0012950                   C_EMP
    SYS_C0012949                   C_DEPT
    View Code

    2、如何监控oracle的索引是否使用?

    很多软件开发过程中,没有注意合理规划索引,造成一个表上有N多个索引,为后续的维护和优化带来麻烦。因此有时候需要监控已有的索引是否在使用,oracle提供了监控索引是否使用的工具,很简单,简要介绍一下。

    首先,我们如果是监控一个表上的所有索引,可以这样先生成监控的命令:

    SQL> select 'alter index '||index_name||' monitoring usage;' from user_indexes where table_name=upper('mpaymentappl');
    
     
    
    'ALTERINDEX'||INDEX_NAME||'MONITORINGUSAGE;'
    ------------------------------------------------------------
    alter index IDX_MPAYMENTAPPL_BCODE monitoring usage;
    alter index MPAYMENTAPPL_FLAGS monitoring usage;
    alter index MPAYMENTAPPL_PAICODE monitoring usage;
    View Code

    然后执行这些脚本就开始监控了,监控信息可通过V$OBJECT_USAGE查看,通过used列可知道这个索引是否被使用: 

    SQL> select * from V$OBJECT_USAGE;
    
     
    
    INDEX_NAME                     TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
    ------------------------------ ------------------------------ --- --- ------------------- -------------------
    IDX_MPAYMENTAPPL_BCODE         MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
    MPAYMENTAPPL_FLAGS             MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
    MPAYMENTAPPL_PAICODE           MPAYMENTAPPL                   YES NO  03/24/2010 10:55:28
    View Code

    取消监控某个索引:

    SQL> ALTER INDEX MPAYMENTAPPL_FLAGS NOMONITORING USAGE;
    
    Index altered.
    
    SQL> select * from V$OBJECT_USAGE;
    
    INDEX_NAME                     TABLE_NAME                     MON USE START_MONITORING    END_MONITORING
    ------------------------------ ------------------------------ --- --- ------------------- -------------------
    IDX_MPAYMENTAPPL_BCODE         MPAYMENTAPPL                   YES NO  03/24/2010 10:55:27
    MPAYMENTAPPL_FLAGS             MPAYMENTAPPL                   NO  NO  03/24/2010 10:55:27 03/24/2010 10:57:19
    MPAYMENTAPPL_PAICODE           MPAYMENTAPPL                   YES NO  03/24/2010 10:55:28
    View Code

    那些持续关注一定时间没有使用的索引就可以删除了,以提高DML操作效率 

    实际工作中,我们可以选择暂时禁用索引功能,来提高数据表插入、修改效率。因为,在索引起作用的情况下,大量数据的DML操作会带来很多的索引更新和Redo Log的生成。这在批量数据加载的时候是不需要的。所以,可以暂时禁用索引。 

  • 相关阅读:
    golang删除数组某个元素
    golang用通道实现信号量,控制并发个数
    什么是ScaleIO中的forwards rebuild和backwards rebuild?
    SQL Server中的database checkpoint
    如何将thick provision lazy zeroed的VMDK文件转换为thick provision eager zeroed?
    LoadTestAgentResultsLateException in VS2010
    SQL Server Instance无法启动了, 因为TempDB所在的分区没有了, 怎么办?
    VMware vCenter中, 如何辩认虚机上Raw Device Mapping过了的一块物理磁盘?
    SQL Server AlwaysOn Setup Step-By-Step Guide
    TPC-E在populate测试Database时需要注意的一些事项
  • 原文地址:https://www.cnblogs.com/arcer/p/3101152.html
Copyright © 2011-2022 走看看