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…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注