DB2程式設計效能注意

2021-08-30 07:41:18 字數 1441 閱讀 6572

2.1   大資料的導表

應該是export後再load效能更好,因為load不寫日誌。

比select into 要好。

2.2    sql語句盡量寫複雜sql

盡量使用大的複雜的sql語句,將多而簡單的語句組合成大的sql語句對效能會有所改善。

db2的sql engieer對複雜語句的優化能力比較強,基本上不用當心語句的效能問題。

oracle 則相反,推薦將複雜的語句簡單化,sql engieer的優化能力不是特別好。

這是因為每乙個sql語句都會有reset sqlcode和sqlstate等各種操作,會對資料庫效能有所消耗。

乙個總的思想就是儘量減少sql語句的個數。

2.3    sql   sp及c sp的選擇

首先,c的sp的效能比sql 的sp 的要高。

一般而言,sql語句比較複雜,而邏輯比較簡單,sql sp 與 c sp 的效能差異會比較小,這樣從工作量考慮,用sql寫比較好。

而如果邏輯比較複雜,sql比較簡單,用c寫比較好。

2.4     查詢的優化(hash及rr_to_rs)

db2set db2_hash_join=y (hash排序優化)

指定排序時使用hash排序,這樣db2在表join時,先對各表做hash排序,再join,這樣可以大大提高效能。     做實驗,7個一千萬條記錄表的做join取10000條記錄,再沒有索引的情況下   72秒。

db2set db2_rr_to_rs=y       

該設定後,不能定義rr隔離級別,如果定義rr,db2也會自動降為rs.

這樣,db2不用管理next key,可以少管理一些東西,這樣可以提高效能。     

2.5    避免使用count(*) 及exists的方法

1、首先要避免使用count(*)操作,因為count(*)基本上要對錶做全部掃瞄一遍,如果使用很多會導致很慢。

2、exists比count(*)要快,但總的來說也會對錶做掃瞄,它只是碰到第一條符合的記錄就停下來。

如果做這兩中操作的目的是為

select into 服務的話,就可以省略掉這兩步。

直接使用select into 選擇記錄中的字段。

如果是沒有記錄選擇到的話,db2 會將   sqlcode=100 和 sqlstate=』20000』

如果是有多條記錄的話,db2會產生乙個錯誤。

程式可以建立   continue handler for   exception

continue handler for   not found

來檢測。

這是最快速的方法。

3、如果是判斷是不是一條,可以使用游標來計算,用乙個計數器,累加,達到預定值後就離開。這個速度也比count(*) 要快,因為它只要掃瞄到預定值就不再掃瞄了,不用做全表的scan,不過它寫起來比較麻煩。

db2效能分析思路

2016 01 18 22 34 56 hury 摘自 db2資料庫管理最佳實踐 摘要 主要用於理清資料庫優化思路,從全域性角度進行分析 發生了什麼事情 什麼時候開始發生的 現在是否依然發生 發生前是否做過什麼更改或特別操作 以前是否發生過類似的問題 如果應用效率低些,到底有多差,一倍的差距,還是1...

DB2程式設計序技巧

1 db2程式設計 1.1 建儲存過程時create 後一定不要用tab鍵 create procedure 的create後只能用空格,而不可用tab健,否則編譯會通不過。切記,切記。1.2 使用臨時表 要注意,臨時表只能建在user tempory tables space 上,如果databa...

DB2 效能優化快速入門

db2 效能優化是一件較為複雜的綜合性的工作 需要對問題的根源作全方位的探索和思考。同時也需要較深厚的資料庫管理經驗與優化知識。這對於初學者來說可能有些勉為其難。但是在很多情況下,隨著 db2 資料庫中的資料量的不斷增長或者使用者數的激增,資料庫系統的效能會顯著下降,而此時快速定位效能上的瓶頸則至關...