包含列組統計信息的 RUNSTATS 列組(Column Group)統計信息將獲得一組列的不同值組合的數目。通常,DB2 優(yōu)化器可用的基本統計信息不檢測數據相關(guān)性。列組的使用將給多個(gè)謂詞的聯(lián)合選擇提供更準確的估計。列組統計信息假設數據是均勻分布的;但還無(wú)法獲得列組上的分布統計信息。 較于列組的基數,單個(gè)列的基數(cardinality)的乘積將獲得更好的相關(guān)性估計。 下列例子說(shuō)明了如何使用 RUNSTATS 收集捕獲了列組信息的目錄統計信息:
示例 19:收集捕獲了列組的目錄統計信息
RUNSTATS ON TABLE db2admin.department ON COLUMNS ((deptno, deptname), deptname, mrgno, (admrdept, location)) | 本例中,總共有兩個(gè)列組:(deptno, deptname) 和 (admrdept, location)。
包含 LIKE STATISTICS 的 RUNSTATS 當在 RUNSTATS 中指定 LIKE STATISTICS 子句時(shí),將收集附加的列統計信息。這些統計信息存儲在 SYSIBM.SYSCOLUMNS 表里的 SUB_COUNT 和 SUB_DELIM_LENGTH 列中。它們僅針對字符串列進(jìn)行收集,查詢(xún)優(yōu)化器用它們來(lái)提高“column LIKE ‘%abc‘”和“column LIKE ‘%abc%‘”類(lèi)型謂詞的選擇性估計。 下列例子說(shuō)明了如何使用 RUNSTATS 收集捕獲了 LIKE 統計信息的目錄統計信息:
示例 20:收集所有列上的目錄統計信息并指定 VARCHAR 列上的 LIKE 統計信息
RUNSTATS ON TABLE db2admin.department ON ALL COLUMNS and COLUMNS (deptname LIKE STATISTICS) |
包含統計信息配置文件的 RUNSTATS 現在,可以在 DB2 V8.2 中為 RUNSTATS 建立一個(gè)統計信息的配置文件。統計信息配置文件是指一組選項,它預先定義了特定表上將要收集的統計信息。 當將命令參數“SET PROFILE”添加到 RUNSTATS 命令時(shí),將在表描述符和系統目錄中注冊或存儲統計信息配置文件。若要更新該統計信息配置文件,則可以使用命令參數“UPDATE PROFILE”。 沒(méi)有刪除配置文件的選項。 下列例子展示了如何使用這項功能:
示例 21:只注冊一個(gè)統計信息配置文件,不收集目錄統計信息 RUNSTATS ON TABLE db2admin.department AND INDEXES ALL SET PROFILE ONLY | RUNSTATS 中的子句“SET PROFILE ONLY”不收集統計信息。
示例 22:注冊一個(gè)統計信息配置文件,并執行所存儲統計信息配置文件的 RUNSTATS 命令選項來(lái)收集目錄統計信息 RUNSTATS ON TABLE db2admin.department AND INDEXES ALL SET PROFILE |
示例 23:僅修改現有的統計信息配置文件,不收集任何目錄統計信息
RUNSTATS ON TABLE db2admin.department WITH DISTRIBUTION AND INDEXES ALL UPDATE PROFILE ONLY |
示例 24:修改現有的統計信息配置文件,并執行已更新的統計信息配置文件的 RUNSTATS 命令選項來(lái)收集目錄統計信息
RUNSTATS ON TABLE db2admin.department WITH DISTRIBUTION AND INDEXES ALL UPDATE PROFILE |
示例 25:根據前面已注冊的統計信息配置文件來(lái)查詢(xún) RUNSTATS 選項
SELECT STATISTICS_PROFILE FROM SYSIBM.SYSTABLES WHERE NAME = ‘DEPARTMENT‘ AND CREATOR = ‘DB2ADMIN‘ |
示例 26:使用前面已注冊的統計信息配置文件收集目錄統計信息
RUNSTATS ON TABLE db2admin.department USE PROFILE |
帶有抽樣的 RUNSTATS 隨著(zhù)數據庫快速不斷地增長(cháng),通過(guò)訪(fǎng)問(wèn)所有數據收集統計信息的能力可能會(huì )受到固定的批量窗口、內存和 CPU 約束的阻礙。 目前,要運行表上的 RUNSTATS,就要執行全表掃描。通過(guò)數據抽樣,只需掃描數據的一個(gè)子集即可。 如果一個(gè)查詢(xún)試圖預計總的趨勢和模式,且某一誤差域(margin of error)內的近似答案足以監測這些趨勢和模式,那么數據抽樣或許是比全表掃描更好的選擇。 在 DB2 V8.1 中,引入了 SAMPLED DETAILED 子句,允許通過(guò)抽樣計算詳細的索引統計信息。該子句的使用將減少為獲得詳細索引統計信息而執行的后臺計算量和所需的時(shí)間,但在大多數情況下,都會(huì )使數據足夠的精確。 以下是一些關(guān)于該子句的使用的例子:
示例 27:收集兩個(gè)索引上的詳細目錄統計信息,但對每個(gè)索引條目使用抽樣來(lái)代替執行詳細的計算
RUNSTATS ON TABLE db2admin.department AND SAMPLED DETAILED INDEXES ALL |
示例 28:收集索引上的詳細抽樣統計信息和表的分布統計信息
RUNSTATS ON TABLE db2admin.department WITH DISTRIBUTION ON KEY COLUMNS AND SAMPLED DETAILED INDEXES ALL | 在 DB2 V8.2 中,提供了對表數據進(jìn)行抽樣的兩種新方法:行級的貝努里(Bernoulli)抽樣和系統頁(yè)級的抽樣。
帶有行級貝努里(Bernoulli)抽樣的 RUNSTATS 行 級貝努里(Bernoulli)抽樣利用 sargable(search + argument-able 謂詞是一個(gè)可以由數據管理器來(lái)評估的謂詞)謂詞獲得百分之 P 的表行樣本,在樣本中包含每一行的概率是 P/100,而不包含它的概率則是 1 - P/100。 例如,對于 10% 貝努里(Bernoulli)抽樣,將會(huì )選擇 10%(10/100)的行,而拒絕 90%(1-10/100)的行。在貝努里(Bernoulli)抽樣中,每一頁(yè)將會(huì )引發(fā)一次 I/O,因為要掃描該表。將生成一個(gè)隨機數來(lái)確定是否選擇一行(類(lèi)似于以 P/100 的概率扔錢(qián)幣)。即使每一頁(yè)都發(fā)生一次 I/O,我們仍然節省了處理數據所需的 CPU 時(shí)間。 在行級貝努里(Bernoulli)抽樣中,需要讀取每一個(gè)數據頁(yè)。然而,它仍然可以帶來(lái)極大的性能提高,因 為 RUNSTATS 是 CPU 密集的。如果索引是可用的,那么就會(huì )改進(jìn)抽樣。如果數據是群集的,它還可以提供更準確的統計信息(所獲得的樣本更好地代表了整個(gè)表數據)。
帶有系統頁(yè)級抽樣的 RUNSTATS 系 統頁(yè)級抽樣與行級抽樣類(lèi)似,除了抽樣的對象是頁(yè)面而不是行。以 P/100 的概率選擇每一頁(yè),而以 1 - P/100 的概率拒絕頁(yè)的選擇。在所選中的每一頁(yè)中,要選擇所有的行。系統頁(yè)級抽樣優(yōu)于全表掃描或貝努里(Bernoulli)抽樣的地方是它節省了 I/O。 抽樣頁(yè)也是預取的,所以該方法將比行級貝努里(Bernoulli)抽樣更快。與不進(jìn)行抽樣相比,頁(yè)級抽樣極大地提高了性能。 RUNSTATS repeatable 子句允許通過(guò) RUNSTATS 語(yǔ)句生成相同的樣本,只要表數據沒(méi)有發(fā)生更改。為了指定該選項,用戶(hù)還必須提供一個(gè)整數,以表示將用于生成樣本的種子(seed)。通過(guò)使用相同的種子,可以生成相同的樣本。 總之,統計信息的準確性取決于抽樣率、數據傾斜(data skew)以及用于數據抽樣的數據群集。 下面是一些使用貝努里(Bernoulli)行級和系統頁(yè)級抽樣的 RUNSTATS 例子:
示例 29:收集統計信息,包含 10% 行上的分布統計信息 RUNSTATS ON TABLE db2admin.department WITH DISTRIBUTION TABLESAMPLE BERNOULLI (10) |
示例 30:為了控制收集統計信息的樣本集,以及可以重復使用相同的樣本集,需要使用下列語(yǔ)句:
RUNSTATS ON TABLE db2admin.department WITH DISTRIBUTION TABLESAMPLE BERNOULLI (10) REPEATABLE (1024) |
示例 31:收集 10% 的數據頁(yè)上的索引統計信息和表統計信息。請注意,只對表數據頁(yè)進(jìn)行抽樣,而不是索引頁(yè)。本例中,10% 的表數據頁(yè)用于表統計信息的收集,而對于索引統計信息,將使用所有的索引頁(yè)。
RUNSTATS ON TABLE db2admin.department AND INDEXES ALL TABLESAMPLE SYSTEM (10) |
收集目錄統計信息的可供選擇的方法 對于數據庫中的所有表,收集統計信息的一個(gè)可供選擇的方法就是發(fā)出一條 REORGCHK 命令,如下所示:
示例 32:使用 REORGCHK 收集所有表的目錄統計信息
REORGCHK UPDATE STATISTICS ON TABLE ALL | reorgchk 命令的 update statistics 選項的作用類(lèi)似于調用 RUNSTATS 例程來(lái)更新數據庫中所有表的目錄統計信息,但是所有列上的統計信息只能通過(guò)默認的 RUNSTATS 選項來(lái)收集。通過(guò)使用該命令,還可以收集單個(gè)表上或同一模式下一組表的統計信息。
示例 33:使用 REORGCHK 收集一個(gè)表的目錄統計信息 REORGCHK UPDATE STATISTICS ON TABLE db2admin.department |
示例 34:使用 REORGCHK 收集一個(gè)模式的目錄統計信息
REORGCHK UPDATE STATISTICS ON SCHEMA systools | 雖然該方法看上去是一種在多個(gè)表上收集目錄統計信息的快速方法,但是僅僅當 REORGCHK 可以在合理的時(shí)間內完成執行時(shí),該方法才是可取的。 在表的 LOAD REPLACE 期間以及索引的創(chuàng )建期間,也可以進(jìn)行目錄統計信息的收集。 在 UDB V8.2 中,為了在 LOAD 期間調用目錄統計信息的收集,必須將選項“STATISTICS USE PROFILE”添加到 LOAD 控制語(yǔ)句中。選項“STATISTICS YES”仍然有用,但它現在已是過(guò)時(shí)的語(yǔ)法。若在表的 LOAD 之后在同一表上執行 RUNSTATS,那么在 LOAD 期間發(fā)出“STATISTICS USE PROFILE”的目的就是為了減少正常運行過(guò)程中占用的時(shí)間。在執行 load 之前,就必須創(chuàng )建統計信息配置文件,它現在允許指定與 RUNSTATS 命令中相同的統計信息選項。
示例 35:使用 LOAD 命令和 STATISTICS USE PROFILE 子句收集目錄統計信息
LOAD FROM inputfile.del OF DEL REPLACE INTO db2admin.department STATISTICS USE PROFILE | 大多數情況下,RUNSTATS 是在創(chuàng )建索引之后執行的。然而,在執行索引創(chuàng )建操作時(shí),也能收集索引的統計信息。這將避免為了收集統計信息而進(jìn)行的另一項索引掃描。下列例子說(shuō)明了完成這項工作可以使用的一些選項:
示例 36:收集基本的索引目錄統計信息:
CREATE INDEX db2admin.inx1 ON db2admin.department (deptno) COLLECT STATISTICS |
示例 37:收集擴展的索引目錄統計信息:
CREATE INDEX db2admin.inx2 ON db2admin.department (deptname) COLLECT DETAILED STATISTICS |
示例 38:收集擴展的索引目錄統計信息,指定使用抽樣:
CREATE INDEX db2admin.inx3 ON db2admin.department (deptname) COLLECT SAMPLED DETAILED STATISTICS |
包含授權和用戶(hù)訪(fǎng)問(wèn)的 RUNSTATS 為了可以對一個(gè)表或索引收集統計信息,必須能夠連接到包含該表和索引的數據庫,并具有下列授權級別之一: - sysadm
- sysctrl
- sysmaint
- dbadm
- 表上的 CONTROL 權限
當對一個(gè)表運行 RUNSTATS 時(shí),有兩種用戶(hù)訪(fǎng)問(wèn)選項:允許讀訪(fǎng)問(wèn)和允許寫(xiě)訪(fǎng)問(wèn)。 在 RUNSTATS 命令中的參數 ALLOW READ ACCESS 指定計算統計信息時(shí),其他用戶(hù)可以只讀地訪(fǎng)問(wèn)該表。 在 RUNSTATS 命令中的參數 ALLOW WRITE ACCESS 指定計算統計信息時(shí),其他用戶(hù)可以讀取或寫(xiě)入該表。如果該表在任何時(shí)刻都必須是可用的,那么應該使用該子句。
分區數據庫中的 RUNSTATS 當 在一個(gè)分區數據庫中發(fā)出 RUNSTATS 命令,并且一個(gè)表分區位于發(fā)出 RUNSTATS 的數據庫分區中時(shí),那么 RUNSTATS 將在該數據庫分區上執行。如果表分區不在該數據庫分區上,那么將請求發(fā)送給數據庫分區組中持有該表分區的第一個(gè)數據庫分區。然后,在該數據庫分區上執行 RUNSTATS 命令。 RUNSTATS 不是在分區的數據庫中并行運行的,但對一個(gè)分區確定信息,然后對所有分區推斷出合適的估計值。有一個(gè)隱式的假設:每個(gè)表中的行是均勻分布在每個(gè)多分區數據庫分區組中的所有分區上的。 下列 IBM 技術(shù)札記(technote)談到了加載一個(gè)表時(shí)運行 RUNSTATS 可能碰到的問(wèn)題。其解決方案就是確保在加載表之前,為該表定義一個(gè)分區鍵(partitioning key)。 IBM Technote # 1153232(2004-02-12): “加載表之后,Runstats 將多分區實(shí)例上 syscat.tables 中的列 CARD 更新為零行。 摘要 如果加載某一給定表之后,其中一個(gè)分區的行數為零,并且將從該分區執行 runstats,那么該命令將更新 syscat. 表中的列 CARD,顯示該表的行數為零。這只對多分區的實(shí)例有影響。 內容 runstats 的行為使其將使用運行它的分區上的數據來(lái)推測該表中的行數。例如,如果加載之后所有數據都在一個(gè)分區上,并從另一分區執行 runstats,那么該命令將更新 syscat.tables 來(lái)表示該表的行數為零。然而,如果是從保存所有數據的分區運行 runstats,那么它將更新 syscat.tables 來(lái)展示該表包含((該分區上的行數)x(分區數目))行。 為了避免 runstats 的行為默認行為,需要在加載表之前,為該表定義分區鍵(partitioning key)。分區鍵需要位于高度惟一的一列或一組列上,從而確保數據均勻分布在該表所定義的所有分區上?!?
調整 STAT_HEAP_SZ 數據庫配置參數 stat_heap_sz 或統計信息堆大小的數據庫配置參數指定了使用 RUNSTATS 命令收集統計信息中所用堆的最大尺寸。它是在啟動(dòng) RUNSTATS 實(shí)用程序時(shí)分配的,然后當它完成時(shí)釋放。stat_heap_sz 是代理私有內存的一部分。因此,在收集分布統計信息時(shí),最好增大 stat_heap_sz 參數,以便能將更多的列放入這個(gè)堆中。處理較寬的表也需要更多的內存。當執行包含 SAMPLED DETAILED 選項的 RUNSTATS 時(shí),必須額外分配 2 MB 內存,以確保 RUNSTATS 能夠成功運行。
減小 RUNSTATS 對系統性能影響的策略 您可以使用下列策略來(lái)幫助減小 RUNSTATS 對于系統的性能影響: - 一次僅在少數表和索引上運行 RUNSTATS,在整組表中循環(huán)運行。
- 僅指定將收集其數據分布統計信息的那些列。僅指定那些謂詞中所使用的列。
- 對于不同的表,在不同的分區上實(shí)現多個(gè)并發(fā)的 RUNSTATS。
- 僅在那些影響當前工作負載的關(guān)鍵表上執行 RUNSTATS。避免在不需要它的表上運行 RUNSTATS。
- 根據表中數據發(fā)生改變的速度,調整 RUNSTATS 的頻率。
- 根據 RUNSTATS 在該表上完成運行的速度,調整 RUNSTATS 的頻率和細節。
- 僅在系統活動(dòng)量少的時(shí)候,安排執行 RUNSTATS。
- 調整(Throttle)RUNSTATS,以便最大程度地減少它對系統的需求。
僅在系統活動(dòng)量少的時(shí)候安排執行 RUNSTATS,這是最大程度地減少系統影響的一個(gè)好方法。然而,對于一個(gè) 24 x 7 的系統,系統中可能沒(méi)有可用的窗口或活動(dòng)量少的時(shí)候。處理該情形的一種方法就是使用 RUNSTATS 的 throttling 選項。 throttling 選項將根據當前的數據庫活動(dòng)級別,來(lái)限制實(shí)用程序所占有的資源數量。UDB 中,在調整時(shí),util_impact_lim 與 UTIL_IMPACT_PRIORITY 參數的交互確定了 RUNSTATS 的行為。UTIL_IMPACT_PRIORITY 關(guān)鍵字被用于諸如 RUNSTATS 的實(shí)用程序命令的子句中,而 util_impact_lim 則是一個(gè)實(shí)例配置參數。 util_impact_lim 參數是指允許所有已調整實(shí)用程序對于實(shí)例的工作負載產(chǎn)生影響的百分比。如果 util_impact_lim 是 100(默認值),則不用調整諸如 RUNSTATS 之類(lèi)的實(shí)用程序調用。例如,如果將 util_impact_lim 設置為 10,那么已調整的 RUNSTATS 調用就被限定在消耗 10% 以下的工作負載。 UTIL_IMPACT_PRIORITY 關(guān)鍵字可充當一個(gè)開(kāi)關(guān),它指定 RUNSTATS 是否訂閱調整策略。
示例 39:UTIL_IMPACT_PRIORITY 關(guān)鍵字的使用 RUNSTATS ON TABLE db2admin.department AND INDEXES ALL UTIL_IMPACT_PRIORITY 10 | 其中,10 是調整 RUNSTATS 的優(yōu)先權或級別。 當 util_impact_lim 不是 100,而且用 UTIL_IMPACT_PRIORITY 調用 RUNSTATS 時(shí),將會(huì )對該值進(jìn)行調整。如果沒(méi)有為 UTIL_IMPACT_PRIORITY 指定優(yōu)先權,且 util_impact_lim 不是 100,那么 RUNSTATS 將使用默認的優(yōu)先權 50,并將據此進(jìn)行調整。如果在 RUNSTATS 命令中省略 UTIL_IMPACT_PRIORITY 關(guān)鍵字,那么可以不加調整地運行 RUNSTATS。如果指定了優(yōu)先權,但是將 util_impact_limit 設置為 100,也可以不加調整地運行 RUNSTATS。如果將優(yōu)先權設置為零,也能不加調整地運行 RUNSTATS。 當定義了 RUNSTATS 調整(throttling),并且該調整可操作時(shí),RUNSTATS 實(shí)用程序預計將花費更長(cháng)時(shí)間,但是對系統產(chǎn)生的影響會(huì )少一些。
RUNSTATS 的其他問(wèn)題 已聲明的全局臨時(shí)表上的 RUNSTATS 可 以在已聲明的全局臨時(shí)表(DGTT)上發(fā)出 RUNSTATS 命令,但是結果的統計信息不存儲在系統目錄中,因為聲明的臨時(shí)表條目沒(méi)有目錄條目。這些統計信息存儲在表示聲明的臨時(shí)表的目錄信息的內存結構中。如果整個(gè) 查詢(xún)經(jīng)過(guò)時(shí)間中所節省的時(shí)間比完成 RUNSTATS 所增加的時(shí)間大得多,就建議發(fā)出 RUNSTATS。 可以在 SQL 例程(過(guò)程、UDF 和方法)中發(fā)出 RUNSTATS 命令嗎? 下列 IBM 技術(shù)札記(technote)討論了該問(wèn)題: IBM Technote # 1153051 “既不能從 SQL 例程(過(guò)程、UDF、方法)、SQL 動(dòng)態(tài)復合語(yǔ)句發(fā)出 RUNSTATS 命令,也不能使用從 SQL 例程中發(fā)出的操作系統調用來(lái)發(fā)出該命令。如果需要發(fā)出 RUNSTATS 命令,那么可以直接從命令行處理器(Command Line Processor,CLP)發(fā)出它,或者通過(guò)使用 db2Runstats() API 函數(DB2 8.1 開(kāi)始)從客戶(hù)機應用程序或外部語(yǔ)言例程發(fā)出它,以及通過(guò) LOAD 和 CREATE INDEX 語(yǔ)句發(fā)出該命令?!? 可以創(chuàng )建一個(gè)名為“runstats”的 C 存儲過(guò)程,調用 db2Runstats() API 函數。然后,可以使用 CALL 命令調用這個(gè) C 存儲過(guò)程。 如何通過(guò)調用級接口(CLI)或 Java 執行 RUNSTATS 來(lái)收集統計信息? 下列 IBM 技術(shù)札記回答了該問(wèn)題: IBM Technote # 1023788: “DB2 管理 API(編程接口)sqlustat 可以用于從 DB2 應用程序發(fā)出 RUNSTATS,例如寫(xiě)入調用級接口的應用程序。DB2 Administrative API Reference 手冊中描述了 sqlustat?!?
DB2 自動(dòng)統計信息收集 DB2 自動(dòng)統計信息收集是在 DB2 UDB Version 8.2 中引入的。自動(dòng)統計信息收集是完全自動(dòng)表維護解決方案的一部分。其目標是允許 DB2 確定工作負載需要哪些統計信息,并定期在后臺自動(dòng)運行 RUNSTATS 實(shí)用程序,以便按需更新統計信息。 為了設置 SAMPLE 數據庫自動(dòng)進(jìn)行統計信息收集,需要為自動(dòng)維護開(kāi)關(guān)設置數據庫配置參數,如下所示: db2 update db cfg for SAMPLE using AUTO_MAINT ON db2 update db cfg for SAMPLE using AUTO_TBL_MAINT ON db2 update db cfg for SAMPLE using AUTO_RUNSTATS ON | 下圖(只顯示統計信息收集和配置選項)展示了統計信息收集和配置的自動(dòng)維護命令的層次結構和相關(guān)性。在該結構中,可以在最高層次快速關(guān)閉自動(dòng)維護參數 AUTO_MAINT,而不丟失較低層的配置設置,比如 AUTO_RUNSTATS。
圖 1. 自動(dòng)維護設置 如 果需要自動(dòng)統計信息配置,那么可以打開(kāi)參數 AUTO_STATS_PROF 和 AUTO_PROF_UPD。自動(dòng)統計信息配置則通過(guò)確定何時(shí)和如何收集統計信息更進(jìn)了一步。統計信息配置文件是自動(dòng)生成的,自動(dòng)統計信息收集過(guò)程將用它 來(lái)調度 RUNSTATS??梢杂脙炔克惴▉?lái)比較新收集的統計信息與已保存的一組統計信息,并基于某些觸發(fā)條件發(fā)出包含抽樣的 RUNSTATS。 當啟用自動(dòng)統計信息配置時(shí),數據庫活動(dòng)的有關(guān)信息被收集并存儲在查詢(xún)反饋倉庫中。然后,基于查詢(xún)反饋倉庫中的數據生成統計配置文件。 為了允許自動(dòng)生成統計信息配置文件,需要設置兩個(gè)數據庫配置參數: - db2 update db cfg for SAMPLE using AUTO_STATS_PROF ON
打開(kāi)該參數將啟動(dòng)查詢(xún)反饋數據的收集。 - db2 update db cfg for SAMPLE using AUTO_PROF_UPD ON
打開(kāi)該參數,指定使用分析查詢(xún)反饋數據的 DB2 中的建議來(lái)更新 RUNSTATS 配置文件。 在觸發(fā)自動(dòng)統計信息配置之前,必須通過(guò)運行 SYSINSTALLOBJECTS 存儲過(guò)程創(chuàng )建查詢(xún)反饋倉庫。 按照下列方式調用該存儲過(guò)程: call SYSINSTALLOBJECTS ( toolname , action , tablespacename , schemaname ) | 其中,toolname 是“ASP”或“AUTO STATS PROFILING”,對于 action,“C”表示創(chuàng )建,“D”表示刪除。 目前,不使用參數 schemaname。 例如,要創(chuàng )建反饋倉庫,需要運行下列存儲過(guò)程: call SYSINSTALLOBJECTS (‘ASP‘, ‘C‘, ‘USERSPACE1‘, ‘‘) | 該過(guò)程將創(chuàng )建下列表、存儲建議以及與查詢(xún)執行過(guò)程中碰到的謂詞有關(guān)的信息: - SYSTOOLS.OPT_FEEDBACK_QUERY
- SYSTOOLS.OPT_FEEDBACK_PREDICATE
- SYSTOOLS.OPT_FEEDBACK_PREDICATE_COLUMN
- SYSTOOLS.OPT_FEEDBACK_RANKING
- SYSTOOLS.OPT_FEEDBACK_RANKING_COLUMN
當禁用 AUTO_PROF_UPD 參數時(shí),可以將建議存儲在 SYSTOOLS.OPT_FEEDBACK_RANKING 表中。然后,當手動(dòng)更新 RUNSTATS 配置文件時(shí),就可以查看該表中所存儲的建議。 DB2 自動(dòng)統計信息收集和配置生成只能在 DB2 串行模式下啟用;它們在聯(lián)邦的、SMP 和 MPP 環(huán)境中是不可用的。
結束語(yǔ) 理 解并正確使用 RUNSTATS 是維護高性能數據庫的關(guān)鍵之一。本文討論了 RUNSTATS 的重要性,并解釋了許多使 RUNSTATS 更有用的可用選項,其中包括 V8.2 中的一些新選項,通過(guò)允許建立指定需要為每個(gè)表收集哪些統計信息的配置文件,這些新選項簡(jiǎn)化了管理。我所展示的示例將使您易于使用 RUNSTATS 獲得最佳的數據庫性能。
參考資料
|