2010-08-03 91 views
0

我們目前正在質疑我們公司的數據模型(數據庫模式),這種模式在過去幾年一直在瘋狂地分佈式增長,現在有冗餘並且缺乏清晰度。不同的數據庫(Oracle和MySQL)通過不同的工具進行查詢,由不同的工具爲不同目的(計費,報告,業務等)開發。計算MySQL和/或Oracle中的列訪問統計信息

爲了更清楚地瞭解不同工具的數據依賴性,即工具T需要哪些確切的信息,一種方法是直接從每個數據庫執行的SQL查詢中識別它們。或者,讓數據庫自己收集這些統計數據會更加有趣。

這種統計的

例子是

  • 如何經常是從表T訪問
  • 如何經常是表T1和T2連接在一起

沒有人知道如何做到這一點列C與MySQL或Oracle或兩者兼而有之?

回答

0

MySQL有一個general query log。有關如何啓用日誌和讀取日誌的說明是MySQL參考手冊的一部分。

MySQL通用查詢日誌是SQL連接,語句和斷開連接的列表。

您將不得不處理MySQL常規查詢日誌以獲取所需的統計信息。

Oracle商務智能服務器有一個query log。我找不到任何有關查詢日誌的普通Oracle數據庫。

+0

我想一般查詢日誌只用了查詢,但我要在它更好看。 – mvaz 2010-08-03 14:07:37

2

Oracle有一個SYS.col_usage $表,其中包含有關如何在WHERE子句中引用單個列的統計信息。不幸的是,沒有列間關係的記錄。也沒有隻讀的列記錄(就像在WHERE子句中一樣)。

的EQUALITY_PREDS列是用於在where子句等的引用:用於NONEQUIJOIN_PREDS,RANGE_PREDS,LIKE_PREDS,NULL_PREDS COL = 123 的EQUIJOIN_PREDS是加入像A.COL = B.COL 也有計數器。

在生成統計數據時收集信息並將其提供給系統。

一個示例腳本這裏:link text