複式 SQL 陳述式執行速度非常慢

如果 Db2 資料庫配置參數 STMTHEAP SZ 設為高,這會對整個查詢執行時期造成嚴重影響,尤其是對於 Product Master 或「廣域資料同步」中的複式 SQL 陳述式。

症狀

在資料庫配置檔中找到參數 STMTHEAP SZ (陳述式資料堆大小) 的 Db2 資料庫配置值已設為高,這會導致「 Db2 最佳化工具」在查詢準備上花費太多時間,導致高準備時間,尤其是當 SQL 陳述式很複雜 (例如使用許多次選取或結合) 時。

解析問題

下列步驟是根據假設使用者介面中 SQL 查詢結果集的慢速傳回是由慢速 SQL 陳述式所導致。 此外,假設資料庫統計資料都已更新。

在慢速 SQL 陳述式存在之後,您需要檢查查詢執行及查詢準備時間值。

只有在準備時間顯示遠大於執行時間的值時,才會強烈指出 Db2 查詢最佳化工具花費太多時間來準備 SQL 陳述式,而且很有可能因為降低「陳述式資料堆大小 (STMTHEAP SZ)」的 DB 配置參數值而大幅減少此值。 若要判定 SQL 查詢的哪個時間值 ("prepare" 或 "run") 緩慢,請將 SQL 陳述式放入檔案 (例如, slow.sql) ,並執行 db2batch 指令,如下所示:
db2batch -d <dbname> -a <userid>/ <userpasswd>  -f  slow.sql -i complete -o  f -1 p 2 o 5

若要解決此問題,在每次使用 db2batch 指令反覆運算之後,反覆地變更 STMTHEAP SZ 參數並測試查詢效能會非常有用,如先前所示。 因此,只要找到慢速且複雜的 SQL 陳述式,且已驗證資料庫統計資料、網路效能等,就值得使用此方法來調整複雜的 SQL 陳述式。