複式 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 陳述式。