程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 使用DB2look重新創建優化器訪問計劃(9)

使用DB2look重新創建優化器訪問計劃(9)

編輯:DB2教程

該表具有一百萬行記錄,一個整型列上定義了主鍵。您運行帶有分布和索引所有選項的 RUNSTATS,從而允許對表進行寫訪問。在獲得表統計數據的時候,有 100,000 條附加記錄插入了該表。因此對於表統計數據,CARD 將顯示為 1,100,000。但是,在我們開始收集索引統計數據時,例如,對於整型列上所定義的主鍵,就插入了 10,000 條附加記錄,因此,該表中的行數是 1,110,000,而主索引 FIRSTKEYCARD 將是 1,110,000。因此,您可以看到不一致性。表統計數據的 CARD 顯示表中應該是 1,100,000 條記錄,而主索引統計數據的 FIRSTKEYCARD 顯示表中應該是 1,110,000 條記錄。對於索引統計數據的更新將失敗,並發出 SQL1227N rc=8 錯誤消息(本例中),因為索引的 FIRSTKEYCARD 大於表的 CARD。您必須手工修復這種不一致性,對於本例,就是使 FIRSTKEYCARD 等於 CARD,均等於 1,100,000,或者反過來 —— 即增加 CARD 到等於 FIRSTKEYCARD,均等於 1,110,000。

您還可能碰到許多其他的不一致性。請確保在將輸出保存為文件的測試中運行帶有 -m 選項的 db2look 時,檢查所有的不一致性,並進行修復。這裡僅僅給出了一個不一致性的例子;您可能會碰到很多其他的不一致性,這將留給用戶去修復所有這些不一致性,然後重新運行 db2look,將輸出重定向到文件中以確保所有更新的統計數據都運行得很好,沒有任何問題。

 

示例 6:

 

在該示例中,您在生產中獲得 SQL0437W rc=1 警告消息,但在測試中沒有看到它。本例中,按照上面的示例重新創建該問題。請確保 STMTHEAP 是相同的。如果它是不同的(例如出於某種原因,測試中高於生產中),那麼您可能就不會看到相同的警告。同樣,我們所討論的其他參數也很重要。

 

SQL0437W rc=2 和其他返回代碼也可以按照相同的方法重新進行創建。

 

其他錯誤消息,例如 SQL0101N 和 SQL0901N 也可以使用相同的方法重新進行創建。甚至可以重新創建編譯器/優化器領域中的中斷。當您處於更老的補丁包級別,並需要嘗試最新補丁包級別以查看是否可以避免該問題時,或者當您需要嘗試不同的優化級別以查看是否將暫時克服該問題時,這就極其有用。

 

結束語

 

db2look 是一個功能極其強大的實用程序,可以用於重新創建訪問計劃問題以及編譯器問題,如本文中所討論的那些。一旦重新創建了該問題,您就可以測試許多可以影響性能的變量,如修改優化級別,嘗試注冊表變量和更新不影響生產的統計數據,以及測試新的補丁包級別。您將發現這個方便的實用程序可用於調試問題和提高查詢性能。 (責任編輯:盧兆林)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved