2011-04-26 101 views
2

我正在尋找一種從Oracle和DB2數據庫獲取統計信息的方法,以便在每個表上執行select/update/insert/delete操作計數。換句話說,我想知道在給定的表上執行了多少次掃描操作,以及執行了多少次修改操作。關於DB2和Oracle的掃描/更新操作統計信息

我已經發現有可能爲http://msdn.microsoft.com/en-us/library/dd894051%28v=sql.100%29.aspx

我需要它的理由說明它在MS SQL服務器做,是因爲它提供了合理的統計,如果它是值得的給定表應用壓縮。掃描/更新比率越好 - 表格越好。我認爲這也適用於其他數據庫。

那麼有可能在Oracle或/和DB2中獲得這些統計信息嗎?提前致謝。

回答

1

我的答案適用於Linux,UNIX和Windows(LUW)平臺的DB2數據庫引擎,而不是DB2 for iSeries(AS/400)或DB2 for z/OS,其引擎內部與LUW平臺顯着不同。我所有的文檔鏈接都包含了DB2 for LUW的參考版本9.7。

DB2 for LUW在每個數據引擎版本中都提供了廣泛的性能和利用率統計信息,其中包括免費的DB2 Express-C產品。這些統計數據的收集由一系列名爲system monitor switches的數據庫引擎設置管理。您尋求的統計信息涉及桌面監視器開關,可能還包括語句和UOW(工作單元)監視器開關。當啓用這些系統監視器開關時,您可以從snapshot monitors或從administrative SQL views(在SYSIBMADM模式中)中檢索與SQL結果集呈現相同快照監視器輸出的各種性能指標和計數器的運行總計。快照監視器比event monitors承擔更少的系統開銷,後者作爲跟蹤在後臺運行,並將詳細信息流存儲到特定的表或文件中。

壓縮是一個licensed feature,它將表和索引的內部存儲從表空間改變到緩衝池(RAM緩存),直到事務日誌文件。在大多數情況下,壓縮和解壓縮所帶來的CPU額外開銷大大低於I/O總體減少量。 deep row compression feature通過構建和使用一個甚至可以跨列邊界的多字節模式的12位字典來壓縮表中的行。在DBA干預之前,啓用深度行壓縮通常會將其大小縮小40%或更多。索引是compressed通過簡化算法,通過省略當前索引鍵和先前索引鍵之間的常用前導字節來利用它們的排序性質。

3

在Oracle中,您可以看到sys.dba_tab_modifications中的表上有多少更新/刪除/插入。數據每4小時刷新一次。對於讀取,您可以使用AWR的一部分dba_hist_seg_stat。這是使用許可的。 一旦表獲得新的優化器統計信息,就會重置sys.dba_tab_modifications。