DB2緩衝池建立修改和刪除

keeptrying發表於2012-12-25

緩衝池是從磁碟讀取表和索引資料時,資料庫管理器分配的用於快取記憶體這些表或索引資料的主儲存器區域。每個DB2資料庫都必須具有一個緩衝池。

每個新資料庫都定義了一個稱為IBMDEFAULTBP的預設緩衝池。可以通過SYSCAT.BUFFERPOOLS目錄檢視訪問資料庫中所定義的緩衝池資訊。

 

一、緩衝池的使用方法:

首次訪問表中的資料行時,資料庫管理器會將包含該資料的頁放入緩衝池中。這些頁一直保留在緩衝池中,直到關閉資料庫或者其他頁需要使用某一頁所佔用的空間為止。

緩衝池中的頁可能正在使用,也可能沒有使用,它們可能是髒頁,也可能是乾淨頁:

l     正在使用的頁就是當前正在讀取或更新的頁。為了保持資料一致性,資料庫管理器只允許一次只有一個代理程式更新緩衝池中的指定頁。如果正在更新某頁,那麼它正在那一個代理程式互斥地訪問。如果正在讀取該頁,那麼多個代理程式可以同時讀取該頁。

l     髒頁包含已更改但尚未寫入磁碟的資料。

l     將一個已更改的頁寫入磁碟之後,它就是一個乾淨頁,並且可能仍然保留在緩衝池中。

 

二、建立緩衝池:

CREATE BUFFERPOOL PAGESIZE 4096

預設情況下,新的緩衝池是使用IMMEDIATE關鍵字建立的。對於立即請求,不需要重新啟動資料庫。落實此語句時,緩衝池將反映在系統目錄表中,但緩衝池要在下次啟動資料庫後才變成活動狀態。

如果發出CREATE BUFFERPOOL DEFERRED,那麼不會立即啟用緩衝池,將在下一次啟動資料庫時建立緩衝池。在重新啟動資料庫之前,任何新的表空間都將使用現有緩衝池,即使建立表空間時規定它顯式使用延遲緩衝池也是如此。

在分割槽資料庫上,還可以定義要在每個資料庫分割槽上以不同方式建立的緩衝池。預設ALL DBPARTITIONNUMS子句指示將在資料庫中的所有資料庫分割槽上建立此緩衝池。DATABASE PARTITION GROUP子句標識緩衝池定義適用於的資料庫分割槽組:

CREATE BUFFERPOOL

   PAGESIZE 4096

   DATABASE PARTITION GROUP

指定了此引數,那麼僅在這些資料庫分割槽組中的資料庫分割槽上建立緩衝池。每個資料庫分割槽組當前必須存在於資料庫中。

 

三、修改緩衝池

在下列情況下可能要修改緩衝池:

l     啟用緩衝池自調整功能,從而允許資料庫管理器根據工作負載調整緩衝池大小。

l     修改基於塊的I/O的緩衝池的塊區域。

l     將此緩衝池定義新增到新的資料庫分割槽組中。

l     修改部分或所有資料庫分割槽上的緩衝池大小。

>>-ALTER BUFFERPOOL--bufferpool-name----------------------------&gt
 
     .-IMMEDIATE-.                                                                                        
>--+-+-----------+--+-------------------------------------+--SIZE--+-number-of-pages----------------+-+-><
   | '-DEFERRED--'  '-DBPARTITIONNUM--db-partition-number-'        '-+-----------------+--AUTOMATIC-' |   
   |                                                                 '-number-of-pages-'              |   
   +-ADD DATABASE PARTITION GROUP--db-partition-group-name--------------------------------------------+   
   +-NUMBLOCKPAGES--number-of-pages--+----------------------------+-----------------------------------+   
   |                                 '-BLOCKSIZE--number-of-pages-'                                   |   
   '-BLOCKSIZE--number-of-pages-----------------------------------------------------------------------' 

 

當使用IMMEDIATE引數時,將立即更改緩衝池大小,而不必等到下一次啟用資料庫時才生效。如果資料庫共享記憶體不足以分配新空間,那麼會延遲(DEFERRED)執行該語句。

當使用DEFERRED引數時,要在重新啟用資料庫後才應用對緩衝池所作的更改。

在落實ALTER BUFFERPOOL語句時,由於此語句而對緩衝池所作的更改將反映在系統目錄表中。但是,要在下次啟動資料庫之後,對實際緩衝池所作的更改才會生效,但是所指定的帶有預設IMMEDIATE關鍵字併成功執行的ALTER BUFFERPOOL請求除外。

 

四、刪除緩衝池

刪除緩衝池時,應確保沒有任何表空間已指定給這些緩衝池。不能刪除IBMDEFAULTBP緩衝池。

DROP BUFFERPOOL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25744374/viewspace-751602/,如需轉載,請註明出處,否則將追究法律責任。

相關文章