本章介紹數(shù)據(jù)庫(kù)緩沖池。
緩沖池是由數(shù)據(jù)庫(kù)管理分配一個(gè)主存空間部分。緩沖池的目的是從磁盤高速緩存表和索引數(shù)據(jù)。所有數(shù)據(jù)庫(kù)都有自己的緩沖池。默認(rèn)緩沖池是在創(chuàng)建新數(shù)據(jù)庫(kù)時(shí)創(chuàng)建的。它被稱為“IBMDEFAULTBP”。根據(jù)用戶的要求,有可能創(chuàng)造一些緩沖池。在緩沖池,數(shù)據(jù)庫(kù)管理器放置表行的數(shù)據(jù)作為頁(yè)。當(dāng)前頁(yè)停留在緩沖直到數(shù)據(jù)庫(kù)是關(guān)閉或直到空間被寫入新的數(shù)據(jù)。在緩沖的頁(yè)面,這是更新的數(shù)據(jù),但不寫入到磁盤,被稱為“臟”的頁(yè)面。后在緩沖更新的數(shù)據(jù)頁(yè)寫入磁盤上,緩沖池是準(zhǔn)備采取另一個(gè)數(shù)據(jù)。
每個(gè)表空間與數(shù)據(jù)庫(kù)中的一個(gè)特定的緩沖池相關(guān)聯(lián)。一個(gè)表空間與一個(gè)緩沖池相關(guān)聯(lián)。緩沖池和表空間的大小必須一致。多個(gè)緩沖池允許配置使用的數(shù)據(jù)庫(kù),以提高其整體性能的內(nèi)存。
緩沖池頁(yè)面的大小,當(dāng)使用“CREATE DATABASE”命令設(shè)置。如果不指定頁(yè)面大小,將采取默認(rèn)的頁(yè)面大小,這是4KB。一旦緩沖被建立,因此不可能以后修改頁(yè)大小
語(yǔ)法:[下面的語(yǔ)法顯示所有可用的緩沖池在數(shù)據(jù)庫(kù)]
db2 select * from syscat.bufferpools
例如:[要查看當(dāng)前數(shù)據(jù)庫(kù)中可用的緩沖池]
db2 select * from syscat.bufferpools
輸出
BPNAME BUFFERPOOLID DBPGNAME NPAGES PAGESIZE ESTORE NUMBLOCKPAGES BLOCKSIZE NGNAME ------------------------------------------------------------ IBMDEFAULTBP 1 - -2 4096 N 0 0 - 1 record(s) selected.
要?jiǎng)?chuàng)建數(shù)據(jù)庫(kù)服務(wù)器新的緩沖池,則需要兩個(gè)參數(shù),即“緩沖池名”和“頁(yè)面大小”。下面的查詢執(zhí)行創(chuàng)建一個(gè)新的緩沖池。
語(yǔ)法:在下面的語(yǔ)法中,“bp_name”表示緩沖池的名字,'size'表示頁(yè)面大小,需要聲明的緩沖池(4K,8K,16K,32K)
db2 create bufferpool <bp_name> pagesize <size>
例如:要?jiǎng)?chuàng)建一個(gè)新的緩沖池名稱為“bpnew”和大小“8192”(8KB)。]
db2 create bufferpool bpnew pagesize 8192
輸出
DB20000I The SQL command completed successfully.
丟棄緩沖之前,需要檢查是否有任何表被分配給它。
語(yǔ)法:[要?jiǎng)h除的緩沖池]
drop bufferpool <bp_name>
例如:要?jiǎng)h除名為'bpnew“的緩沖池]
db2 drop bufferpool bpnew
輸出
DB20000I The SQL command completed successfully.