在平常維護及系統優化過程當中,咱們有時須要分析哪些數據庫對象是使用頻率較高的,哪些對象是長期不用的,從而有依據的制定優化策略。對訪問頻率高的,儘可能作到物理模型最優(如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