1.6 Instance & Database
注意事项
一个db2实例可以包含多个数据库
Oracle中的pfile或spfile对应db2中的dbm cfg(Database Manager Configuration)和db cfg(Database Configuration),其中dbm为实例级参数
Db 为数据库级参数
Oracle中db_blocksize_size对应db2中的pagesize,
DB2 支持以下几种页大小:4k,8k,16k 和 32k等,pagesize的大小还信赖于os块
Db2中无oracle的undo,redo概念,只有一个log文件(事务日志)
Oracle中的system空表间对应db2中的syscatspace
Oracle中data Dictionary对应db2中叫:系统编目表(由 SYSIBM 模式标识),系统视图(由 SYSCAT 或 SYSSTAT 模式标识),驻留在 SYSCATSPACE 表空间中
DB2 没有一组预定义的缓冲池,但是可以根据需要创建足够多的缓冲池。在创建具有给定页大小的表空间时,必须预先存在一个具有给定页宽的缓冲池
日期数据类型比较
如果只使用MM/DD/YYY,那么使用DATE类型。
如果只使用HH:MM:SS, 那么使用TIME类型。
如果要使用日期和时间,则使用时间戳类型(TIMESTAMP)
可以使用Oracle中的TO_CHAR()函数来取DATE的字串来分别与DATE、TIME相匹配。
若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…