程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 析DB2性能調優方面的12個疑難問題的全面解析

析DB2性能調優方面的12個疑難問題的全面解析

編輯:DB2教程

以下的文章主要描述的是全面解析DB2性能調優方面的12個疑難問題,假如你在實際操作中遇到相似的情況,但是你卻不知道對其如何正確的解決,那麼以下的文章對你而言一定是良師益友。

1、邏輯設計應該總是能和物理設計完全映射

實際:DB2數據庫設計中物理設計應該盡可能的和邏輯結構相近,但是為性能做出的物理設計改變不能被忽略,因為它們並不來自於邏輯設計。

2、將所有東西放在一個緩沖池(BP0)中讓DB2管理

實際:就像在DB2手冊和其他地方說明的一樣,你只能在你的內存非常受限的情況下(10000 4k pages或者更少),你沒有時間去管理它,你也沒有考慮到性能的條件下,去這樣做。最好這樣說:不要放置除了DB2 catalog和目錄以外的東西進入BP0。

3、DSNDB07是100%順序的

實際:DSNDB07從來就不是100%順序的,因為有工作文件中的對頁面進行的隨機活動。隨即活動可能高達45%,但是通常范圍是3%到10%。

4、VARCHAR應該總是被放置在行末

實際:這就是總是引發問題的話。如果表總是被讀,並且非常少的更新,那麼可以,這將會減少CPU負載,但是在其它情況下這樣做就是最壞的,甚至如果表是被壓縮的。只有在頻繁更新的情況下它應該被放置在末尾,但是並不通常這樣。

5、程序應該以遵循邏輯過程的方式編碼

實際:偽代碼或者一個邏輯過程圖並不需要考慮DB2性能調優相關的編碼方式。在OLTP交易代碼中這非常具有戲劇性。

6、大多數過程不在SQL中進行

實際:事實上,問題的反面往往是正確的。SQL是一個非常豐富的語言,能夠處理大多數過程。實際上最大的困難是SQL經常被用來作為I/O處理器而不是一個集合處理器。

7、代碼和引用表應該和DB2聲明的referential integrity(RI)一起使用

實際:RI不應該作為一個編輯有效性的快捷方式而使用,這通常屬於別的什麼,但是應該在真父子關系中使用。

8、表至多有一到兩個索引

實際:表應該按照性能需求擁有多個索引。

9、非分割索引(NPI)不應該被使用,尤其是不應該在大的表中使用

實際:這關系到數不清的問題,總體上這些都能被克服,但是NPI是對適當的訪問和性能非常必要的。

10、大表應該被分割

實際:因為一個表中有太多數據就意味著有性能下降,這是一個遺留的擔心。當一些表中有超過60億行數據時,這個理解已經被消除了。

11、DB2缺省就是好的

實際:缺省的一般不是最好的,他們因版本不同而改變。比如考慮綁定參數CURRENTDATA。

12、不要在SQL WHERE謂詞裡使用否定

實際:另外一個這種規則並沒有被解釋清楚。只有謂詞是一個否定時,SQL訪問路徑可能使用一個不必要的表空間掃描。但是在其它的多數情況下,多余的過濾應該在DB2引擎裡完成,這會較好。以上的相關內容就是對全面解析DB2性能調優方面的二十個疑難問題的介紹,望你能有所收獲。

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