`

索引的合并、重建与监视

阅读更多
查看当前用户的所有索引:
SQL> select index_name,index_type,table_name,uniqueness from user_indexes;

INDEX_NAME                     INDEX_TYPE                  TABLE_NAME                     UNIQUENES
------------------------------ --------------------------- TT_IDX                         NORMAL                      TT                             NONUNIQUE
PARTITION_IDX_LOCAL            NORMAL                      PARTITIONED_2                  NONUNIQUE
PARTITIONED_IDX                NORMAL                      PARTITIONED_1                  NONUNIQUE
UNION_T3_INDEX                 NORMAL                      T3                             NONUNIQUE
                   UNIQUE

已选择20行。

已用时间:  00: 00: 00.45
查看索引所在的表和列
SQL> select index_name,table_name,column_name from user_ind_columns order by 2,3;
TEST1_PK                       TEST_TAB1                      A_COL
TRUN_UNI_INDEX                 TRUN_TAB                       A
TT_IDX                         TT                             USER_ID
I5                             TT1                            DEPTNO

SQL> create table t_tab as select * from emp;


表已创建。

已用时间:  00: 00: 00.46
SQL> create index t_indx_empno on t_tab(empno);

索引已创建。

已用时间:  00: 00: 00.04
SQL> analyze index t_indx_empno validate structure;

索引已分析


已用时间:  00: 00: 00.03
SQL> select height,blocks,br_blks,lf_blks,lf_rows,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS    DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- ---------- ----
         1          8          0          1         14           0

已用时间:  00: 00: 00.06
SQL> select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         1          8          0          1         14           0

已用时间:  00: 00: 00.01
SQL> update t_tab set empno=7777 where empno=7900;


已更新 1 行。

已用时间:  00: 00: 00.00
SQL> commit;

提交完成。

已用时间:  00: 00: 00.01
SQL> analyze index  t_indx_empno validate structure;


索引已分析

已用时间:  00: 00: 00.00
SQL> select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         1          8          0          1         15           1

已用时间:  00: 00: 00.00

SQL> update t_tab set empno=8888 where empno=7902;

已更新 1 行。

已用时间:  00: 00: 00.00
SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
SQL> analyze index  t_indx_empno validate structure;

索引已分析

已用时间:  00: 00: 00.01
SQL> select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         1          8          0          1         15           1

已用时间:  00: 00: 00.01


SQL> insert into t_tab select * from t_tab;

SQL> commit;

提交完成。

已用时间:  00: 00: 00.00


SQL> select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         1          8          0          1         15           1

已用时间:  00: 00: 00.01
SQL> analyze index  t_indx_empno validate structure;

索引已分析

已用时间:  00: 00: 00.00
SQL>  select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         2          8          1          4       1792           0

已用时间:  00: 00: 00.03

SQL> select count(*) from t_tab;

  COUNT(*)
----------
      1792

已用时间:  00: 00: 00.01
SQL> delete t_tab where rownum<=600;

已删除600行。

已用时间:  00: 00: 00.01
合并索引:
SQL> alter index t_indx_empno coalesce;

索引已更改。

已用时间:  00: 00: 00.06
SQL> analyze index t_indx_empno validate structure;

索引已分析

已用时间:  00: 00: 00.00
SQL> select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         2          8          1          3       1192           0

已用时间:  00: 00: 00.01
重建索引:
SQL> ALTER INDEX T_INDX_EMPNO REBUILD;

索引已更改。

已用时间:  00: 00: 00.18
SQL> ANALYZE INDEX T_INDX_EMPNO VALIDATE STRUCTURE;


索引已分析

已用时间:  00: 00: 00.00
SQL>  select height,blocks,br_blks,lf_blks,lf_rows,del_lf_rows from index_stats;

    HEIGHT     BLOCKS    BR_BLKS    LF_BLKS    LF_ROWS DEL_LF_ROWS
---------- ---------- ---------- ---------- ---------- -----------
         2          8          1          3       1192           0

已用时间:  00: 00: 00.01


注意:1.在查看索引的内容时,一定要先分析索引(analyze index my_index validate structure),不然的话数据不会重新收集。
2.合并只是合并枝干内的叶子,如果叶子属于不同的枝干则分别独立合并,合并不会改变索引的结构,不会改变索引的表空间和索引的类型。有事务的时候也可以合并索引。
3.重建只能够在没有事务的情况下进行,如果有未提交的事务,就会报错。
4.对本文中列的说明:
height:索引的高度
blocks:索引的总块数
br_blks:枝干块数
lf_blks:叶子块数
lf_rows:叶子内行数
del_lf_rows :叶子中被删除的行数

索引的监视与取消监视


查看索引是否使用过,如果长期未使用过的索引,就可以删除掉
1.生成监控索引的脚本文件:
spool c:\index_monitor.log
select 'alter index '||index_name||' monitoring usage;' from user_indexes; 
spool off;
然后对该脚本文件修改一下,并执行,即可监控索引了。


查看索引是否使用过:
select table_name,index_name,used from v$object_usage;
如果used列对应的值为NO,则证明该索引未使用过。在监视过程中
我们不能够启动数据库,因为v$视图会被重新创建,丢失原来的监视。


2.生成取消监控索引的脚本文件:
spool c:\index_nomonitor.log
select 'alter index '||index_name||' nomonitoring usage;' from user_indexes;
spool off;



3.生成重建索引的脚本文件
spool /home/oracle/index_rebuild.sql
SELECT 'ALTER INDEX '||INDEX_NAME ||' REBUILD;'FROM USER_INDEXES; 
spool off;

4.生成合并索引的脚本文件
spool /home/oracle/index_rebuild.sql
SELECT 'ALTER INDEX '||INDEX_NAME ||' coalesce;'FROM USER_INDEXES; 
spool off;
分享到:
评论

相关推荐

    Oracle查询优化改写-技巧与案例

    同时,也可能会讨论索引的维护和优化,如重建索引、合并索引等。 3. **连接优化**:在处理多个表的联接查询时,优化JOIN操作至关重要。可能涉及的话题包括内连接、外连接、自连接的优化,以及使用子查询替代JOIN的...

    oracle删除哪些内容可以减少USERS01.DBF数据文件的大小

    在Oracle数据库系统中,`USERS01.DBF` 是一个数据文件,通常与表空间关联,用于存储用户的表、索引和其他对象的数据。当这个数据文件占用的空间过大时,可能需要通过各种方法来减少其大小,以优化存储资源。以下是...

    70-442 PRO Designing and Optimizing Data Access by Using Microsoft SQL Server 2005

    7. **数据库性能监视与调优**:使用SQL Server Profiler和Dynamic Management Views (DMVs)来监控数据库性能,识别瓶颈并提出解决方案。理解资源调优,包括内存管理、CPU调度和I/O系统优化。 8. **数据库复制**:...

    数据库资料_MSSQL01

    还要学习如何通过统计信息、索引重建和数据库配置来提升整体系统性能。 5. **备份与恢复策略**:理解不同的备份类型(完整、差异、日志),以及如何制定合适的备份计划。同时,学习如何进行数据库恢复,包括简单...

    Partitioned Table and Index Strategies Using SQL Server 2008.docx

    - **维护操作**:如何有效地对分区表和索引进行维护,包括重建、收缩和重新组织,以保持系统的良好运行状态。 - **性能监控**:如何使用SQL Server的性能监视工具评估分区策略的效果,识别潜在瓶颈并进行优化。 总...

    ORACLE配置文件优化

    优化索引包括选择合适的索引类型(B树、位图、函数索引等),避免索引冗余,以及定期分析和维护(如重建、合并)。 5. **数据库性能调优**:这不仅包括配置文件优化,还包括SQL查询优化、表分区、物化视图、索引...

    sqlserver2008数据库实例练习

    8. **性能监视与调优**:通过SQL Server的性能监视工具,你可以分析数据库的运行状况,找出瓶颈,并采取相应的优化策略,如调整查询计划、增加索引或优化硬件配置。 9. **数据库维护计划**:定期进行数据库维护,如...

    sql server 2008 dba入门经典代码

    理解何时使用唯一索引、全文索引或空间索引,以及如何通过`ALTER INDEX`进行重建或重新组织,是优化查询性能的重要步骤。 五、备份与恢复 备份策略是确保数据安全的关键。SQL Server 2008支持完整备份、差异备份、...

    重建——改善既有代码的设计

    重构(名词):对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本.重构(动词):使用一系列重构准则(手法),在不改变"软件之可察行为"前提下,调整其结构...索引419

    SQL Server 2005存储引擎1-5

    - **索引维护**:适时重建和重新组织索引,提高查询效率。 - **查询性能分析**:使用动态管理视图(DMV)监控SQL Server的运行状态,找出性能瓶颈。 7. **存储过程和触发器**: - **存储过程**:预编译的SQL语句...

    SQLServer 2008中文版数据库

    SQL Server 2008是微软...索引重建、统计更新、查询改写和内存调优都是常见的性能优化手段。 以上只是SQL Server 2008中文版数据库的部分关键知识点,实际使用中,还需要根据具体业务需求和场景进行深入学习和实践。

    SharePoint性能优化

    4. 降低索引频率:对于频繁更新的列表,可以适当降低索引频率,以减少索引重建的开销。 四、网站架构优化 1. 页面设计:尽量减少页面元素数量,合并CSS和JavaScript文件,使用雪碧图和懒加载技术来减少页面加载时间...

    SQL SERVER 2005系统管理实录

    理解不同类型的索引(如B树、哈希、全文索引)及其优缺点,以及何时重建或重新组织索引,对于优化查询性能十分关键。 7. **复制技术**: SQL Server 2005的复制功能允许数据在多个服务器之间同步,支持快照复制、...

    70-441 PRO Designing Database Solutions by Using Microsoft SQL Server 2005

    - **索引重建和重新组织**:定期维护索引来保持最佳性能。 3. **安全性与访问控制**: - **身份验证和授权**:了解 Windows 和混合身份验证模式,以及角色、权限和登录的管理。 - **加密技术**:使用透明数据...

    SQL查询、优化数据库

    5. **定期维护**:执行定期的数据库维护任务,如重建索引、更新统计信息,以保持数据库的良好状态。 6. **资源分配**:合理分配数据库服务器的硬件资源,如内存、CPU和磁盘I/O,以确保数据库运行顺畅。 7. **监控...

    50种方法巧妙优化SQL Server数据库

    24. **并行索引**:在创建或重建索引时启用并行,加快操作速度。 25. **延迟规范化**:在不影响业务的前提下,延迟数据规范化以提高查询性能。 26. **分区函数**:根据业务场景设计分区函数,实现数据的快速访问。...

    MCITP SQL Server 2005 70-445 教程

    4. **性能监控与调优**:使用SQL Server Management Studio(SSMS)进行性能监视,识别瓶颈并应用调优技术,如查询改写、索引重建和统计更新。 5. **复制技术**:掌握SQL Server的复制功能,包括事务复制、合并复制...

    SQL Server® 2008 Administration

    - **自动化任务**:通过SQL Server Agent等工具实现定期执行的维护计划,如索引重建、数据库压缩等。 - **监控**:介绍性能监视器、动态管理视图(DMVs)和系统表等工具,用于监控SQL Server的运行状态。 ### 性能...

    es的安装及客户端操作es库

    1. **索引重建**: 当映射更改或数据质量下降时,可能需要重建索引。 2. **热温冷架构**: 通过不同的硬件配置,优化不同年龄数据的存储和检索效率。 3. **监控和调优**: 使用Kibana的监视器功能,监控集群健康、...

Global site tag (gtag.js) - Google Analytics