系统部分内存监控信息-sys_mem_status
序号 | 字段名 | 类型 | 备注 |
---|---|---|---|
1 | NODEID | INTEGER | 节点号 |
2 | CURR_T | DATETIME | 当前时间 |
3 | BUFF_SIZE | BIGINT | 数据区块大小,单位B |
4 | TOTAL_BUFF_NUM | BIGINT | 数据缓冲区buff数 |
5 | FREE_BUFF_NUM | BIGINT | 数据缓冲区可用buff数 |
6 | DIRTY_BUFF_NUM | BIGINT | 脏数据buff数 |
7 | LRU_BUFF_NUM | BIGINT | 已产生变动的buff数 |
8 | SGA_BLK_SIZE | BIGINT | 全局区块大小 |
9 | TOTAL_SGA_MEM | BIGINT | SGA区buff数 |
10 | FREE_SGA_MEM | BIGINT | SGA区可用buff数 |
11 | PEAK_SGA_MEM | INTEGER | SGA历史峰值数 |
虚谷数据库的内存中将预申请到的可用内存划分给不同的buff区,该表对数据缓冲区和SAG缓存内存的变化进行了动态记录,观察此表可分析当前数据库部分内存使用情况。
下面对该表的字段进行解析:
BUFF_SIZE:数据缓冲区块大小,虚谷数据库内存设计中,内存块和存储块不同,内存块无法通过xugu.ini参数修改大小,默认8192字节;存储块虽然也默认为8192字节,但是可通过xugu.ini中的block_size进行大小更改(可选大小2M、4M、8M、16M)。
TOTAL_BUFF_NUM:数据缓存区可用的BUFF数量,受xugu.ini中参数data_buff_mem影响。假设data_buff_mem=X(单位是M),计算公式如下:X = TOTAL_BUFF_NUM*BUFF_SIZE/1024/1024。此部分内存划分后单元内存由buffer管理器分组管理(组数由cata_parti_num控制)。数据块缓存结合checkpoint机制,减少数据库对磁盘数据的读写次数,在有限磁盘io能力上提供更高性能。
FREE_BUFF_NUM:数据缓冲区可用buff数。初始值约为TOTAL_BUFF_NUM的97%~98%。随值变更操作增加而减少,最终在TOTAL_BUFF_NUM的10%左右波动。但始终保持FREE_BUFF_NUM+LRU_BUFF_NUM=TOTAL_BUFF_NUM。
DIRTY_BUFF_NUM:脏数据buff数,内存中未落盘的数据缓存,随着数据变更容量增加,CKPT后清0,CKPT1后不清0。
LRU_BUFF_NUM:已变更的buff块数。新启动库或重启后,改值为TOTAL_BUFF_NUM的2%~3%。当数据变更量增大时,该值持续变大,最终在TOTAL_BUFF_NUM的90%左右波动。但始终保持FREE_BUFF_NUM+LRU_BUFF_NUM=TOTAL_BUFF_NUM。
SGA_BLK_SIZE:SGA全局区BUFF块大小,受ena_share_sga参数控制。当允许缓冲区与SGA共享时,BUFF块大小为8K,当不允许缓冲区与SGA共享时,BUFF块大小为256K。
TOTAL_SGA_MEM:SGA区总buff数,等于system_sga_mem/SGA_BLK_SIZE。
FREE_SGA_MEM:当sql中存在hash、排序、分组等情况时,消耗SGA内存buff块数,FREE_SGA_MEM随之减少。
PEAK_SGA_MEM:SGA历史峰值数,记录数据库运行过程中最高的SGA区BUFF块消耗数。
本字典表涉及到的虚谷内存结构如下:
当SGA与数据buff共享时:
当SGA与数据buff不共享时: