自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DB2 V9.7 語句集中器的正確應用描述

數據庫
此文章主要向大家描述的是DB2 V9.7 語句集中器的正確使用,以下就是對DB2 V9.7 語句集中器的實際操作步驟的具體描述。

以下的文章主要向大家描述的是DB2 V9.7 語句集中器的正確使用,我們大家都知道在 OLTP 環(huán)境下,每秒中有大量 SQL 語句在運行,DB2 V9.7 數據庫版本之前,每條動態(tài) SQL 語句的執(zhí)行都會要求 DB2 對其進行編譯。

DB2 對 SQL 語句進行編譯是一個非常消耗 CPU 的行為。 DB2 V9.7 中提出了語句集中器,對類似而不等同的動態(tài) SQL 語句進行變換,使得這些類似的 SQL 語句在包緩沖中進行共享,大大減少了編譯的次數以消除編譯的開銷。

簡介

在 DB2 數據庫中存在兩種類型的 SQL 語句,一種為動態(tài) SQL,一種為靜態(tài) SQL 。靜態(tài) SQL 的執(zhí)行計劃是在 bind 包到數據庫時就已經確定,執(zhí)行時只需要把執(zhí)行計劃調出來即可;動態(tài) SQL 的執(zhí)行計劃需要每次執(zhí)行時進行編譯,如果下次執(zhí)行時,執(zhí)行計劃已經不在包緩存中則需要重新編譯該語句。

在 OLTP 環(huán)境下,每秒鐘需要執(zhí)行的 SQL 非常多,如果這些 SQL 語句都是動態(tài)語句,則都需要大量的 CPU 時間進行編譯。 DB2 判斷一個動態(tài) SQL 語句的執(zhí)行計劃是否在包緩存中時采用的是 HASH 算法,該算法根據 SQL 語句的文本進行 HASH,SQL 文本即使只有一個字母的大、小寫不同,也會造成 HASH 值不同如果 HASH 值不同,則認為是兩個不同的 SQL 語句。

對下面的兩個語句 DB2 就認為是不同的 SQL 。

  1. select firstnme,lastname from employee where empno='000020'   
  2. select firstnme,lastname from employee where empno='000070'  

上面兩個語句雖然在在 Where 條件處只有一個數字差異,DB2 HASH 算法也會認為這是兩個不同的 SQL 。但是 DB2 為他們生成的執(zhí)行計劃都是一樣的,我們使用 db2expln 工具獲得執(zhí)行計劃如下。執(zhí)行計劃顯示上面兩個 SQL 語句都是使用索引 PK_EMPLOYEE 先獲取 RID,然后根據 RID 再讀取具體的數據。

  1. Rows   
  2. RETURN   
  3. ( 1)   
  4. Cost   
  5. I/O   
  6. |   
  7. 1   
  8. FETCH   
  9. ( 2)   
  10. 7.58163   
  11. 1   
  12. /----+----\   
  13. 1 42   
  14. IXSCAN TABLE: DB2INST1   
  15. ( 3) EMPLOYEE   
  16. 0.0165581 Q1   
  17. 0   
  18. |   
  19. 42   
  20. INDEX: DB2INST1   
  21. PK_EMPLOYEE   
  22. Q1  

雖然兩個 SQL 的執(zhí)行計劃是相同的,但是 DB2 為了獲取執(zhí)行計劃需要對兩個 SQL 都要進行編譯,消耗了 CPU 。這種消耗在每秒鐘執(zhí)行成千條 SQL 語句的 OLTP 環(huán)境下,對性能的影響是比較大的。

語句集中器的啟用

DB2V9.7 推出了語句集中器的功能,語句集中器在數據庫服務器上修改動態(tài) SQL 語句,以使類似而不等同的 SQL 語句可以共享同一個執(zhí)行計劃。如果啟動了DB2 V9.7 語句集中器,上述兩個 SQL 只需要編譯一次即可。

在聯(lián)機事務處理(OLTP)系統(tǒng)中,可能會反復生成包含不同字面值的簡單語句。在此類工作負載中,重新編譯語句的成本會導致開銷大幅增加。語句集中器通過允許重復使用已編譯的語句(而不考慮字面值)來消除此開銷。

缺省情況下,語句集中器處于禁用狀態(tài)。如果希望對數據庫中的所有動態(tài)語句啟用語句集中器,我們需要將 stmt_conc 數據庫配置參數設置為 LITERALS 。不過 DB2 只會將前 100000 個字面值才進行替換;其余字面值保持不變,一般情況下這也能滿足我們的要求。

  1. db2 get db cfg for sample |grep "CON"  

 

語句集中器 (STMT_CONC) = OFF

 

如果并不希望對所有 SQL 啟動語句集中器,只是希望指定連接在執(zhí)行動態(tài) SQL 時進行語句集中,則我們可以在客戶機上啟動語句集中器,需要在 db2cli.ini 配置文件中設置:

  1. StmtConcentrator = WITHLITERALS  

默認情況下連接的語句集中器是否啟動由 Server 的配置決定。如果設置 StmtConcentrator 的值為 OFF,表示連接的DB2 V9.7 語句集中器關閉;如果 StmtConcentrator 為 WITHLITERALS 表示啟動語句集中器。當語句集中器啟動后,所有 Server 支持集中的語句將共享執(zhí)行計劃。 db2cli.ini 中的參數 StmtConcentrator 影響的是連接的 SQL_ATTR_STMT_CONCENTRATOR 屬性,我們也可以在 ODBC、JDBC 程序中直接設置連接的這個屬性。

我們應優(yōu)先考慮在客戶機級別啟用語句集中器,首先它允許在最精細的級別控制語句集中器,其次,它是在整個 DB2 產品系列中啟用語句集中器的唯一一致方式。

語句集中過程導致修改動態(tài)語句,那么原始語句和修改后的語句都將顯示在說明輸出中。如果語句集中器已修改原始語句文本,那么事件監(jiān)視器邏輯監(jiān)視元素以及 MON_GET_ACTIVITY_DETAILS 表函數的輸出都將顯示原始語句。其他監(jiān)視器界面將僅顯示修改后的語句文本。

我們修改數據配置參數 STMT_CONC 對所有連接啟動DB2 V9.7 語句集中器。

  1. db2 update db cfg for sample using STMT_CONC LITERALS  

然后我們分別執(zhí)行:

  1. select firstnme,lastname from employee where empno='000020'   
  2. select firstnme,lastname from employee where empno='000070'  

我們使用下面語句獲取 SQL 語句的編譯、執(zhí)行情況:

  1. db2 get snapshot for dynamic sql on sample  

執(zhí)行數 = 0

編譯數 = 0

 

最差預編譯時間(毫秒) = 0

 

最佳預編譯時間(毫秒) = 0

 

---------------------------------- 省略 ------------------------------

 

語句文本 = select firstnme,lastname from employee where empno='000020'

 

執(zhí)行數 = 0

編譯數 = 0

 

最差預編譯時間(毫秒) = 0

 

最佳預編譯時間(毫秒) = 0

 

---------------------------------- 省略 ------------------------------

 

語句文本 = select firstnme,lastname from employee where empno='000070'

 

執(zhí)行數 = 2

編譯數 = 1

 

最差預編譯時間(毫秒) = 218

 

最佳預編譯時間(毫秒) = 218

 

---------------------------------- 省略 ------------------------------

 

語句文本 = select firstnme,lastname from employee where empno=:L0

 

我們看到兩個原始的 SQL 語句編譯次數、執(zhí)行次數、編譯時間均為 0,同時有個用” :L0 ”參數標識的語句編譯次數為 1,執(zhí)行次數為 2,編譯時間為 218 毫秒,以上的相關內容就是對DB2 V9.7 語句集中器的介紹,望你能有所收獲。

完整內容的學習,請訪問:

http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0907luohq3/

【編輯推薦】

  1. 對DB2數據庫賬戶以及用戶標識的正確認識
  2. DB2連接端口不能啟動這一問題的殲滅
  3. JDBC連接DB2數據庫的“捷徑”
  4. 對DB2 實現split的操作流程描述
  5. DB2數據庫雙機的正確安裝流程描述

 

 

責任編輯:佚名 來源: kejiweb.com
相關推薦

2010-08-16 11:34:11

IBM DB2 V9.

2010-08-16 13:53:26

2010-08-19 09:30:31

DB2 V9.7

2010-08-10 10:23:16

IBM DB2 V9.

2010-08-10 10:42:27

DB2 V9.7

2010-08-19 08:49:41

DB2 V9.7 索引

2010-08-11 11:39:06

IBM DB2 V9.

2010-08-16 16:08:34

DB2 V9.7

2010-08-31 13:42:56

DB2連接代理

2010-08-10 17:24:15

2010-08-18 16:45:40

IBM DB2 Cat

2010-08-10 11:01:12

DB2 V9.7

2010-08-11 15:48:04

DB2編程

2010-08-11 15:48:04

DB2編程

2010-08-16 10:10:27

DB2常用函數

2010-08-06 14:52:13

DB2 9.7武器

2010-08-06 15:05:04

IBM DB2連接集中

2010-08-19 09:22:03

DB2 V9.7 分區(qū)

2010-08-11 09:56:20

DB2 V9.7

2010-08-04 15:23:04

DB2用戶密碼
點贊
收藏

51CTO技術棧公眾號