程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 一條Select語句叢生到死的處理過程

一條Select語句叢生到死的處理過程

編輯:DB2教程

一條Select語句叢生到死的處理過程   以一條普通的“select * from table order by …”語句為例。圖2-21中顯示為該語句在數據庫中各個組件之間的處理過程,各個步驟分別代表: (1)select語句通過網絡傳送給代理線程; (2)SQL語句經過重寫及編譯,將編譯結果存放在Package cache中; (3)協調代理線程(coordinating agent)按照執行計劃執行語句,將預取請求發送給預取線程; (4)預取線程在容器間並行執行異步I/O,將數據頁放入緩沖池中(如果沒有發生預取,則略過第4步); (5)將容器中的數據頁放入緩沖池中; (6)將需要排序的數據移動到排序堆中; (7)如果排序堆不夠,則將排序數據放到臨時表空間中; (8)排序完成的行被子代理送回客戶端。 執行過程中要注意以下幾個細節,這些細節也是影響性能的關鍵因素: (1)SQL語句的執行計劃可能會極端影響性能; (2)如果發生預取,預取線程會從磁盤中取出連續的數據頁,此時代理線程處於等待狀態; (3)如果沒發生預取,則協調代理會並行地從磁盤中取出數據。 到此為止,一條select語句就徹底執行完了,我們可以看到,一條最基本的查詢語句在DB2中經過各個組件的協調,歷經了8個步驟最終完成。在遇到一個性能問題時,任何一個環節都可能成為性能瓶頸。

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