达梦数据库-字典缓冲区 (二)-v2
达梦数据库-字典缓冲区(二)
select para_name,para_value,para_type from v$dm_ini where para_name like '%CACHE_POOL%';行号 PARA_NAME PARA_VALUE PARA_TYPE
---------- --------------- ---------- ---------
1 CACHE_POOL_SIZE 100 IN FILE
执行的 SQL 语句:
SELECT para_name, para_value, para_type
FROM v$dm_ini
WHERE para_name LIKE '%CACHE_POOL%';
这是在 达梦数据库(Dameng Database) 中查询与“缓存池”相关的初始化参数。我们来详细解析这条语句及其返回结果。
🧩 一、语句解析
部分 | 说明 |
---|---|
v$dm_ini | 达梦数据库的系统视图,用于查看所有可配置的初始化参数(类似于 Oracle 的 v$parameter )。 |
para_name | 参数名称 |
para_value | 参数当前设置的值 |
para_type | 参数的修改方式类型 |
LIKE '%CACHE_POOL%' | 模糊匹配参数名中包含 “CACHE_POOL” 的项 |
📊 二、查询结果解析
字段 | 值 | 说明 |
---|---|---|
PARA_NAME | CACHE_POOL_SIZE | 缓存池总大小参数 |
PARA_VALUE | 100 | 当前设置为 100 MB |
PARA_TYPE | IN FILE | 表示该参数只能通过修改配置文件生效,不能动态修改,必须重启数据库 |
🔍 三、CACHE_POOL_SIZE
详解
1. 作用
CACHE_POOL_SIZE
是达梦数据库中 主数据缓存池(Main Buffer Pool) 的总内存大小。- 它用于缓存:
- 数据页(表数据)
- 索引页
- 临时表数据
- 其他数据块
- 类似于 Oracle 的
DB_CACHE_SIZE
或 MySQL 的innodb_buffer_pool_size
。
2. 工作原理
- 当用户查询数据时,达梦会先检查该数据页是否已在
CACHE_POOL
中。- 如果在(缓存命中),直接从内存读取,速度快。
- 如果不在(缓存未命中),则从磁盘读入内存并放入缓存池。
- 缓存命中率越高,数据库性能越好。
3. 默认值
- 通常默认为
80MB
或100MB
,你的系统设置为100MB
,属于常见默认配置。
4. 单位
- MB(兆字节)
🔧 四、是否需要调整?建议值
场景 | 建议 |
---|---|
开发/测试环境,数据量小 | 保持 100MB 可接受 |
生产环境,数据量较大(GB级以上) | 建议增大到 1GB ~ 数GB |
服务器内存充足(如 16GB+) | 可设置为物理内存的 40%~60% |
性能瓶颈在磁盘 I/O | 增大缓存可显著提升性能 |
✅ 一般建议:
- 小型系统:
256MB
- 中型系统:
1GB ~ 4GB
- 大型系统:
8GB+
⚠️ 五、修改注意事项
由于 PARA_TYPE = IN FILE
,该参数 不能在线修改,必须:
修改步骤:
-
找到达梦的配置文件:
dm.ini
路径通常为:$DM_HOME/data/<实例名>/dm.ini
-
找到或添加参数行:
CACHE_POOL_SIZE = 512
将
100
改为更大的值,例如512
(即 512MB)或1024
(1GB) -
保存文件。
-
重启数据库服务:
# 停止服务 systemctl stop DmServiceDMSERVER# 或使用达梦命令 $DM_HOME/bin/DmServiceDMSERVER stop# 启动服务 $DM_HOME/bin/DmServiceDMSERVER start
-
重启后验证:
SELECT para_name,