成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

DB2性能優化之設計DB2配置數據庫很好用!

數據庫
此文章主要向大家講述的是DB2性能優化之設計DB2配置數據庫的正確操作步驟,以及對其在實際操作中值得我們大家留意的事項的描述。

在這里我們主要向大家講述的是DB2性能優化之設計DB2配置數據庫的正確操作步驟,在實際操作中有很多數據庫設計與配置選項時直接影響查詢DB2數據庫的性能。對數據庫設計的更多建議參考“ Planning your Physical Database Design ”***實踐文章。

 

使用約束來提高查詢優化

 

考慮定義的唯一性,檢查并參考一致性約束。這些約束提供了語義信息,允許 DB2 優化器重寫查詢來評估連接,通過連接來降低聚合和 FETCH FIRST N ROWS,去掉不必要的 DISTINCT 選項被和一些其它的DB2性能優化。

當應用程序可以保證它自己的關系時,信息約束也可以被用來檢查并參考一致性約束。相同的優化也是可以的。當更新(插入或刪除)行的時候,來自數據庫管理器的強制約束可能導致很高的系統開銷,尤其在更新很多有一致性約束的行的時候。如果一個應用程序在更新一行之前已經驗證的信息,這樣使用信息約束比起正常的約束更有效

 

例如,考慮 2 個表 DAILY_SALES 和 CUSTOMER 。在 CUSTOMER 表中的每一行都有一個唯一的客戶鍵值(CUST_KEY)。 DAILY_SALES 包含一個 CUST_KEY 列并且每一行都引用一個 CUSTOMER 表中的客戶鍵。可以創建一個參考一致性約束來防止在 CUSTOMER 和 DAILY_SALES 之間發生 1:N 的關系。

如果應用程序要強制約束這個關系,可以創建一個信息化的約束。那么下面的查詢避免了在 CUSTOMER 和 DAILY_SALES 之間進行連接,因為沒有從 CUSTOMER 獲取任何列,而且來自于 DAILY_SALES 的每一行都可以在 CUSTOMER 里面找到與之匹配的行,所以查詢優化器將自動刪除連接

 

  1. SELECT AMT_SOLD, SALE PRICE, PROD_DESC   
  2. FROM DAILY_SALES, PRODUCT, CUSTOMER   
  3. WHERE   
  4. DAILY_SALES.PROD_KEY = PRODUCT.PRODKEY AND   
  5. DAILY_SALES.CUST_KEY = CUSTOMER.CUST_KEY   

應用程序必須執行信息約束,否則查詢可能返回不正確的結果。在上面的例子中,如果行存在于 DAILY_SALES 中,在 CUSTOMER 表中卻找不到相應的客戶鍵,那么上面的查詢返回的行可能不正確。

在復雜查詢中使用 REOPT 綁定選項和輸入變量

 

在一個在線事務處理(OLTP)環境的中輸入變量有較好的語句準備時間是關鍵,在這樣的環境中語句往往比較簡單而且查詢計劃選擇也很簡單。使用不同的輸入變量多次運行相同的語句可以復用在動態語句高速緩存中編譯了的訪問片段,避免了由于隨時更改輸入值而造成昂貴的 SQL 語句編譯開銷。

 

然而,輸入變量對復雜的查詢負載也會造成問題,它們的查詢計劃選擇非常復雜,因此優化器需要更多的信息來做出好的決定。而且,語句編譯時間通常是總運行時間中的一個很小組成部分。因為 BI 查詢通常不會重復,所以并沒有從動態語句高速緩存上得到好處。

 

如果在一個復雜查詢工作負載中需要使用輸入變量,請考慮使用 REOPT(ALWAYS) BIND 選項。當輸入變量值是已知的,REOPT BIND 選項從 PREPARE 到 OPEN 或執行過程中推遲了語句編譯。變量值被傳遞到 SQL 編譯器中,這樣優化器可以使用這些便利來計算一個更精確的選擇評估。 REOPT(ALWAYS) 表示所有執行語句都應該被預編譯。

REOPT(ALWAYS) 也可以被用于涉及特殊寄存器的復雜查詢,比如 "WHERE TRANS_DATE = CURRENT DATE - 30 DAYS" 。如果輸入變量對 OLTP 工作負載造成較差的訪問計劃選擇,并且 REOPT(ALWAYS) 選項因為語句編譯造成過多的開銷,那么考慮對挑選過的查詢使用 REOPT(ONCE) 。 REOPT(ONCE) 推遲語句的編譯直到***數據變量被綁定。

使用這個***輸入變量值編譯并優化 SQL 語句。后續使用不同的值來運行的語句將重用基于***個輸入編譯的查詢片段。這是一個好方法 , 如果***輸入變量代表了后續的輸入值,并且在輸入值未知的情況下比起優化器使用不同的值進行評估,它提供個了一個更好的查詢訪問計劃 .

 

有很多方法來指定 REOPT:

 

對 C/C++ 應用程序中的嵌入式 SQL,使用 REOPT BIND 選項。這個 BIND 選項影響靜態和動態 SQL 的再DB2性能優化行為。

 

對 CLP 包,用 REOPT 綁定參數重新綁定 CLP 包。例如,使用 CS 隔離級別和 REOPT ALWAYS 來重新綁定 CLP 包,詳細命令:

  1. rebind nullid.SQLC2G13 reopt always;  

對使用傳統 JDBC 驅動的 CLI 應用程序或 JDBC 應用程序,在 db2cli.ini 中設置 REOPT 關鍵字。選項的值是:

2 - NONE

 

3 - ONCE

 

4 - ALWAYS

 

對于使用 JCC 通用驅動的 JDBC 應用程序,使用下面的方法之一:

使用 SQLATTR_REOPT 連接或語句屬性。

 

使用 SQL_ATTR_CURRENT_PACKAGE_SET 連接或語句屬性來制定 NULLID、NULLIDR1 或 NULLIDRA 包集合。 NULLIDR1 和 NULLIDRA 是保留的包集合名稱。一旦使用就分別隱含了 REOPT ONCE 和 REOPT ALWAYS 。這些包集合需要于那個下面命令顯示的創建: db2 bind db2clipk.bnd collection NULLIDR1;

 

  1. db2 bind db2clipk.bnd collection NULLIDRA;  

對 SQL PL 存儲過程使用下面的方法之一:

使用 SET_ROUTINE_OPTS 存儲過程來為在當前會話中創建 SQL PL 存儲過程設置綁定選項,例如調用 sysproc.set_routine_opts( ‘ reopt always ’ )

 

使用 DB2_SQLROUTINE_PREPOPTS 注冊表變量在實例級別設置 SQL PL 存儲過程選項。值設置為使用 SET_ROUTINE_OPTS 存儲過程將覆蓋 DB2_SQLROUTINE_PREPOPTS 指定的值

 

你可也能使用優化配置來為靜態語句和動態語句設置 REOPT,如下面例子顯示的:

 

  1. <STMTPROFILE ID="REOPT example "> <STMTKEY> 
  2. <![CDATA[select acct_no from customer where name = ? ]]> 
  3. </STMTKEY> 
  4. <OPTGUIDELINES> 
  5. <REOPT VALUE='ALWAYS'/> 
  6. </OPTGUIDELINES> 
  7. </STMTPROFILE> 

為你的工作負載選擇***的優化級別

 

設置優化級別可以獲得顯式指定優化技術的好處,尤其出于下面的原因:

 

為了管理非常小的數據庫或者非常簡單的查詢語句

 

為了在你的數據庫服務器編譯時進行內存限制

 

為了減少查詢編譯時間,比如 PREPARE

 

大多數語句可以通過使用第 5 級優化得到充分的優化和合理的資源,這也是默認的查詢優化級別。在一個給定的優化級別,查詢編譯時間和資源消耗是主要受查詢復雜度的影響,尤其是連接以及子查詢的數目。不過,編譯時間和資源的使用同樣受到執行優化的影響。

 

查詢優化級別 1,2,3,5 和 7 適用于一般用途。只有你需要進一步減少查詢優化時間而且在你知道 SQL 語句非常簡單的情況下才考慮級別 0 。

 

Tip:要分析一個運行很長時間的查詢,對查詢運行 db2batch 來找出花了多少時間在編譯上在運行上花費了多少時間。如果編譯需要更多的時間,降低優化級別。如果執行需要更多的時間那么就考慮更高的優化級別

 

當你選擇了一個優化級別,考慮下面的一般準則:

 

從使用默認查詢優化級別開始,級別 5

 

要使用默認級別之外的級別,首先嘗試級別 1,2 或 3 。級別 0,1 和 2 使用貪婪連接枚舉運算法則。

 

如果你有很多表以及在同一列上有大量的連接謂詞,在關心編譯時間的情況下使用DB2性能優化級別 1 或 2 。

 

對只有不到一秒的運行時間的查詢使用一個低的優化級別(0 或 1)。比如查詢往往有下面的特點:

 

只訪問一個或很少的表

 

只獲取一行或者幾行

 

使用完全唯一的索引

 

在線事務處理(OLTP)事務是這種類型訪問的很好例子

 

對長時間運行(超過 30 秒)的語句使用高一些的優化級別(3,5 或 7)。

 

優化級別 3 及其以上使用動態編程連接枚舉算法。這個算法考慮更多的可選計劃,并且可能招致比 0,1,和 2 更多的編譯時間,尤其在表的數目增加后。

 

只有在你對一個查詢有特別的優化需求時才使用優化級別 9 。

 

復雜查詢需要不同數量的優化來選擇***訪問計劃。對有下面特征的查詢,請考慮使用更高的DB2性能優化級別,

 

 

以上的相關內容就是對的介紹,望你能有所收獲。

【編輯推薦】

  1. 正確提高DB2數據備份和恢復的效率要用到哪些項目?
  2. DB2恢復刪除表的實際操作技巧演示
  3. 3個方案實現備份恢復DB2數據庫,很簡單!
  4. DB2數據遷移哪幾種方案可以實現?
  5. DB2在線備份,以及重定向恢復實戰演習!
責任編輯:佚名 來源: 人民郵電出版社
相關推薦

2009-02-26 09:34:16

性能優化DB2數據庫

2011-03-21 09:51:04

DB2性能優化

2010-08-25 10:50:48

DB2數據庫

2009-12-16 10:48:42

DB2數據庫

2010-08-04 15:59:29

2009-07-06 17:34:26

遠程復制DB2

2011-03-02 17:56:40

DB2數據庫

2010-08-26 10:37:40

DB2Q復制

2010-08-26 16:15:25

DB2數據庫管理

2010-11-01 11:30:41

DB2數據庫權限

2010-09-30 11:49:21

DB2數據庫權限

2010-11-03 16:21:18

DB2數據庫授權

2009-06-25 10:30:30

2011-03-11 16:02:03

DB2數據庫安裝

2010-08-17 09:11:42

DB2數據庫備份性能

2010-08-02 11:11:41

DB2性能調優

2010-08-17 16:24:32

IBM DB2數據庫

2010-07-28 14:07:51

DB2數據庫

2010-08-12 09:49:51

優化DB2數據庫備份

2010-08-26 15:48:21

DB2優化數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩午夜影院 | 秋霞a级毛片在线看 | 亚洲欧美成人影院 | 亚洲一区二区不卡在线观看 | 人和拘一级毛片c | 亚洲视频国产视频 | 成人免费观看男女羞羞视频 | 91av在线影院 | 欧美成年网站 | 亚洲精品www久久久久久广东 | 久久91| 日韩三级在线观看 | 国产精品国产三级国产aⅴ无密码 | 日韩在线播放一区 | 在线视频一区二区三区 | 成年人网站免费视频 | 99精品国产一区二区三区 | 欧美理论片在线观看 | 精品国产乱码久久久久久闺蜜 | 欧美一级做性受免费大片免费 | 久久美女网 | 欧美成人精品 | 精品一区电影 | 国产一区二区欧美 | 日韩一区二区黄色片 | 久久久综合色 | 一级在线观看 | 久久久亚洲 | 欧美日日 | 日韩在线小视频 | 国产精品一卡 | 国产精品第2页 | 国产精品视频专区 | 日本天天操 | 午夜男人天堂 | 日韩av大片免费看 | 在线小视频 | 一区二区三区高清 | 四虎永久免费地址 | 中文在线视频观看 | 亚洲激情一级片 |