db2與oracle的全面對比2


1.6    Instance & Database


注意事項

    一個db2實例可以包含多個數據庫

    Oracle中的pfilespfile對應db2中的dbm cfg(Database Manager Configuration)db cfg(Database Configuration),其中dbm為實例級參數

Db 為數據庫級參數

    Oracledb_blocksize_size對應db2中的pagesize,
DB2
支持以下幾種頁大小:4k,8k,16k 32k等,pagesize的大小還信賴於os

    Db2中無oracleundo,redo概念,只有一個log文件(事務日誌)

    Oracle中的system空表間對應db2中的syscatspace

    Oracledata Dictionary對應db2中叫:系統編目表(由 SYSIBM 模式標識),系統視圖(由 SYSCAT SYSSTAT 模式標識),駐留在 SYSCATSPACE 表空間中

    DB2 沒有一組預定義的緩衝池,但是可以根據需要創建足夠多的緩衝池。在創建具有給定頁大小的表空間時,必須預先存在一個具有給定頁寬的緩衝池

    日期數據類型比較

如果只使用MM/DD/YYY,那麼使用DATE類型。
如果只使用HH:MM:SS, 那麼使用TIME類型。


如果要使用日期和時間,則使用時間戳類型(TIMESTAMP
可以使用Oracle中的TO_CHAR()函數來取DATE的字串來分別與DATETIME相匹配。

 

    Oracle中定義NUMBER(p) NUMBER(p,s), 則使用SAMLLINT/INTEGER/BIGINT
l
Oracle中定義NUMBER(p,s), 則使用DECIMAL(p,s)

 

 

 

2     內存模型

2.1    內存結構層次


DB2 4 種不同的內存集(memory set)內拆分和管理內存。這 4 種內存集分別是:

    實例共享內存(instance shared memory

    數據庫共享內存(database shared memory

    應用程序組共享內存(application group shared memory

    代理私有內存(agent private memory

 

 

2.2    實例共享內存

數據庫管理器配置(dbm cfg)參數控制着對實例共享內存以及其中個別內存池的限制,主要參數:

    實例內存(
instance_memory
)。

    監視器堆(
mon_heap_sz
):用於監控。

    Audit Buffer
audit_buf_sz
):用於 db2audit 實用程序。

    Fast Communication buffers
fcm_num_buffers
):用於分區之間的節點間通信。僅適用於分區的實例。

 

硬限制:

如果
instance_memory
被設置為某一個數字,則採用
instance_memory

mon_heap_sz

audit_buf_sz

fcm_num_buffers
的和之間的較大者。這時,對實例內存就施加了一個硬性的限制,而不是軟限制。當達到這個限制時,就會收到內存分配錯誤

 

軟限制:

如果
instance_memory
被設為
AUTOMATIC
,則可以使用下面的命令來確定它的值:

    db2 attach to instance_name(其中
instance_name
是實例的名稱)

    db2 get dbm cfg show detail

下面的輸出表明有 42 MB 的內存被預留給實例共享內存集(10313 * 4096 字節/頁):

    Size of instance shared memory (4KB) (INSTANCE_MEMORY) = AUTOMATIC(10313) AUTOMATIC(10313)

instance_memory參數只是設置了實例共享內存的限制。它並沒有說出當前使用了多少內存。要查明一個實例的內存使用情況,可以使用 DB2 內存跟蹤器工具
db2mtrk
。例如,

    db2start

    db2mtrk -i -v

    Memory for instance

    FCMBP Heap is of size 17432576 bytes

    Database Monitor Heap is of size 180224 bytes

    Other Memory is of size 3686400 bytes

    Total: 21299200 bytes

上面的例子表明,雖然預留給實例共享內存集的內存有 42 MB,但在
db2mtrk
運行時只用到了大約 21 MB

 

 

2.3    數據庫共享內存

每個數據庫有一個數據庫共享內存集。數據庫共享內存是在數據庫被激活或者第一次被連接上的時候分配的。該內存集將在數據庫處於非激活狀態時釋放(如果數據庫先前是處於激活狀態)或者最後一個連接被斷開的時候釋放。這種內存用於數據庫級的任務,例如備份/恢復、鎖定和 SQL 的執行。

 

個數據庫有一個數據庫共享內存集。數據庫共享內存是在數據庫被激活或者第一次被連接上的時候分配的。該內存集將在數據庫處於非激活狀態時釋放(如果數據庫先前是處於激活狀態)或者最後一個連接被斷開的時候釋放。這種內存用於數據庫級的任務,例如備份/恢復、鎖定和 SQL 的執行。

2展示了數據庫共享內存集內的各種內存池。括號中顯示了控制這些內存池大小的配置參數。


2 – DB2 數據庫共享內存
    
完整的綠色方框意味着,在數據庫啟動的時候,該內存池是完全分配的,否則,就只分配部分的內存。例如,當一個數據庫第一次啟動時,不管
util_heap_sz
的值是多少,只有大約 16 KB 的內存被分配給實用程序堆。當一個數據庫實用程序(例如備份、恢復、導出、導入和裝載)啟動時,才會按
util_heap_sz
指定的大小分配全額的內存。

 

    主緩衝池

 

數據庫緩衝池通常是數據庫共享內存中最大的一塊內存。DB2 在其中操縱所有常規數據和索引數據。一個數據庫必須至少有一個緩衝池,並且可以有多個緩衝池,這要視工作負載的特

以下文章點擊率最高

Loading…

     

如果這文章對你有幫助,請掃左上角微信支付-支付寶,給於打賞,以助博客運營