INSTANCE_MEMORY 实例内存
DATABASE_MEMORY 数据库内存
APPL_MEMORY 应用程序内存
DB2 中主要有三种内存结构:
实例共享内存:这是数据库管理器全局共享内存,是在使用 db2start 命令启动实例时分配给实例的,
并且在发出 db2stop 命令停止实例之前一直处于已分配状态。
数据库共享内存:这是数据库全局内存,是在激活数据库或者第一次连接到数据库时分配的。
分配的内存包括缓冲区池、锁列表、数据库堆、实用程序堆、包缓存和编目缓存。
应用程序共享内存:这是在应用程序连接到数据库时分配的内存,由处理连接到数据库的客户机所请求的工作的代理使用。
每个连接到数据库的应用程序都会被分配内存;因此,正确地配置会影响应用程序共享内存的参数非常重要。
SELF_TUNING_MEM 自动内存管理 STMM
BUFFERPOOL
LOCKLIST
SORTHEAP
PACKCACHESZ
-----------------------------------
DB2 使用多少内存?
下面是查看内存使用情况的一些方法:
db2pd -dbptnmem
使用 db2 get 按样获得应用程序快照 db2 get snapshot for applications on sample
select * from table(admin_get_dbp_mem_usage())
db2mtrk -a 和 db2mtrk -p
注意以下信息:
db2pd 显示共享内存分级结构的准确表示
db2pd 仍不能报告私有内存的分配情况
db2mtrk 可以报告私有内存的分配情况,但在其他方面比较弱
私有内存的使用情况不再那么值得关心
db2pd -dbpntmem 高级报告可能已经足够
db2 get dbm cfg show detail|grep INSTANCE_MEMORY
对于一个 DB2 Express 许可,INSTANCE_MEMORY 的上限被进一步限制为至多 4GB 内存(1,048,576 * 4KB 页)。
DB2 Workgroup 许可被限制为至多 16GB 内存(4,194,304 * 4KB 页)。
如果尝试将 INSTANCE_MEMORY 配置参数更新为大于这些限制的值,那么会遭到失败,并收到 SQL5130N 返回码,指定该许可允许的限制范围。