在平常维护及系统优化过程当中,咱们有时须要分析哪些数据库对象是使用频率较高的,哪些对象是长期不用的,从而有依据的制定优化策略。对访问频率高的,尽可能作到物理模型最优(如PI是最常常用来关联的,数据分布是均匀的等)。而那些长期不用的对象(表/视图),能够考虑删除。使用频率高的字段和使用频率低的字段进行表拆分...数据库
那么如何获取Teardata表/视图/字段的访问频率信息呢?下面作详细说明:工具
[@more@]性能
按照下列步骤打开/关闭开关:
一、 用secureCRT类的工具链接到数据库节点机;
二、 输入cnsterm 6 打开窗口6;
三、 输入 start dbscontrol 命令,打开dbscontrol工具;
四、 出现Started 'dbscontrol' in window 1提示后,按 Ctl+C 退出窗口6;
五、 输入cnsterm 1 切换到窗口1;
六、 能够看到
Release 13.00.01.11 Version 13.00.01.11
DBSControl Utility (Dec 99)
等信息,说明dbscontrol已成功开启
七、输入display gen 命令,能够看到第30个选项为 ObjectUseCountCollectRate,即为咱们须要修改的参数,其值默认是0(即为关闭),可将其改成15(即表示每15分钟更新一次访问频率信息)来打开开关;
八、输入命令modify gen 30 =15
九、输入命令QUIT;
出现以下提示:
The DBS Control Record has been modified.
Enter: 'W' to write to the DBS Control GDO or
'Q' to terminate with no update:
十、W 上述修改生效。
上述操做后,系统将中止收集表访问信息。优化
DBSControl中的系统参数:ObjectUseCountCollectRate,单位是分钟,缺省值为0,数据字典中的AccessCount,LastAccessTimeStamp数据不更新。
设置为非零值,即生效。须要关闭时,从新将此值设置为0便可。
注:该值设置为10以上,不然会影响性能。.net
上述开关打开一段时间后(如一个月),咱们能够查看对象(表/视图/字段)被使用的频率信息:
sel a.databasename,a.tablename,LastAccessTimeStamp,sum(currentperm)
from dbc.tables a,dbc.tablesize b
where a.databasename = 'TEST'
and a.tablename = 'BRD_OFF_WARN_MON'
--and a.accesscount < 10
and a.LastAccessTimeStamp < cast('2011-03-01 00:00:00' as timestamp(0))
and a.databasename = b.databasename
and a.tablename = b.tablename
And a.tablekind = 'T'
group by 1,2,3 order by 4 desc,1,2,3对象
一样,要看表的字段是否被使用过,将上述dbc.tables表改成dbc.columns查询便可。get