查看IQ数据中未使用过的表、字段和索引的方法(1)

938阅读 0评论2012-01-21 我要去水立方
分类:

    系统运行过程中在IQ数据库中可能存在一些未使用的表和索引等对象,它们会浪费磁盘空间,增加数据库的备份时间,降低DML操作的性能。
    从IQ 12.7 ESD 3开始,IQ提供了收集、分析、查看未被查询语句使用过的表、字段、索引等对象信息的工具。我们在实际系统运行的数据库中,一旦发现这些对象可以把它们删除掉。由于在IQ Simplex(单Server)和IQ Multiplex(集群)环境下的使用方法有些不同,下面将分别加以介绍。

1. IQ Simplex环境下使用方法
   下面所说的方法适用于IQ 12.7 ESD 3及以上版本、IQ 15的所有版本(IQ 运行在Simplex环境下)。我们假设使用DBA用户进行登录执行(如果用其他普通用户,那么需要对相应存储过程进行授权)。
 (1) 首先需要启动工作负载收集
     sp_iqworkmon 'start'   --使用缺省模式启动工作负载收集(包括表、字段和索引访问)

     注意:收集的信息位于内存中,IQ Server重启或是执行了sp_iqworkmon ‘reset’信息会丢失,并且需要使用上面sp_iqworkmon ‘start’命令重新启动信息收集。

   (2) 运行应用系统或应用系统的相关功能模块
     在运行期间,IQ会自动收集应用系统发出的SQL语句访问IQ数据库对象的统计信息。

     注意:这里所说的SQL语句是指SELECT、UPDATE和DELETE语句。
 

   (3) 停止工作负载收集
     sp_iwowrkmon 'stop'   --停止工作负载收集

     注意:在停止收集后,先前收集的信息不会被清除。

(4) 获得在SQL语句中未使用过对象的信息
     sp_iqunusedtable  --返回未使用过表的表名和属主信息
     sp_iqunusedcolumn  --返回未使用字段名、字段所属的表名即属主信息
     sp_iqunusedindex   --返回未使用索引名、索引类型、所在表名及表的属主信息

     注意:这里所说的SQL语句是指SELECT、UPDATE和DELETE语句。

 (5) 清除收集的统计信息
     sp_iwowrkmon 'reset'   --清除收集的信息

     注意:当收集的统计信息不再需要时,应当使用reset模式清除它们。

   如果想在清除之前把收集的对象使用信息保存下来,可以使用方法:
     select * into iq_unusedtable from sp_iqunusedtable();
     select * into iq_unusedcolumn from sp_ iqunusedcolumn();
     select * into iq_unusedindex from sp_ iqunusedindex();

 

上一篇:Oracle10g RAC 环境日常管理
下一篇:sqlplus命令手册