注册
DM数据库实例配置与参数管理
技术分享/ 文章详情 /

DM数据库实例配置与参数管理

JcRapunzel 2026/08/07 188 0 1

基于 CentOS 7 虚拟机环境(4核8G内存),已安装 DM 数据库,实例名 DMTEST

一、环境确认

1.1 当前环境信息

项目 配置
操作系统 CentOS Linux 7 (Core)
CPU 4核 Intel i7-14650HX
内存 7.6G 总内存,可用约 6.3G
数据目录 /dmdata (30G)
数据库实例 DMTEST
服务名 DmServiceDMTEST
DM安装目录 /home/dmdba/dmdbms

1.2 关键路径

# 设置环境变量 export DM_HOME=/home/dmdba/dmdbms export DM_DATA=/dmdata # 查看实例状态 systemctl status DmServiceDMTEST

二、DM实例内存架构

DM数据库实例的内存结构如下图所示:

DM实例内存结构

序号 内存区域 参数名 作用 说明
1 数据缓冲区 BUFFER 缓存数据页,减少磁盘I/O 最大内存区域,建议占物理内存40%-60%
2 字典缓冲区 DICT_BUF_SIZE 缓存表结构、索引等元数据 提升DDL/DML元数据访问速度
3 SQL缓冲区 CACHE_POOL_SIZE 缓存SQL执行计划和结果集 减少SQL重复解析开销
4 重做日志缓冲区 RLOG_BUF_SIZE 缓存事务日志 单位是页(默认32KB/页),影响事务提交性能
5 排序缓冲区 SORT_BUF_SIZE ORDER BY / GROUP BY等排序操作 排序操作专用内存
6 回收缓冲区 RECYCLE 缓存被淘汰的数据页 用于快速重新加载热数据

补充说明

核心参数说明

参数名 作用 当前值 单位
BUFFER 数据缓冲区 2000 MB
DICT_BUF_SIZE 字典缓冲区 128 MB
CACHE_POOL_SIZE SQL缓冲区 200 MB
RLOG_BUF_SIZE 重做日志缓冲区 1024 页(约32MB)
RLOG_POOL_SIZE 重做日志池 256 MB
SORT_BUF_SIZE 排序缓冲区 10 MB
RECYCLE 回收缓冲区 240 MB
WORKER_THREADS 工作线程数 4
MAX_SESSIONS 最大会话数 100

三、参数查看方法

3.1 连接数据库

cd /home/dmdba/dmdbms/bin ./disql SYSDBA/SYSDBA@localhost:5236

3.2 查看所有参数

-- 查看所有参数 SELECT * FROM V$PARAMETER; -- 查看参数总数 SELECT COUNT(*) FROM V$PARAMETER;

image.png

3.3 查看核心参数

-- 查看关键内存参数 SELECT NAME, VALUE, SYS_VALUE, FILE_VALUE, DESCRIPTION FROM V$PARAMETER WHERE NAME IN ( 'BUFFER', -- 数据缓冲区(MB) 'DICT_BUF_SIZE', -- 字典缓冲区(MB) 'RLOG_BUF_SIZE', -- 重做日志缓冲区(页数) 'RLOG_POOL_SIZE', -- 重做日志池(MB) 'SORT_BUF_SIZE', -- 排序缓冲区(MB) 'CACHE_POOL_SIZE', -- SQL缓冲区(MB) 'RECYCLE', -- 回收缓冲区(MB) 'MAX_SESSIONS', -- 最大会话数 'WORKER_THREADS' -- 工作线程数 );

image20260804171009017.png

四、参数类型与修改方式

4.1 参数类型说明

TYPE值 含义 说明
READ ONLY 只读参数 不可修改
IN FILE 静态参数 修改后需重启
SYS 系统动态参数 修改后立即生效
SESSION 会话级参数 仅影响当前会话
-- 查看参数类型分布 SELECT TYPE, COUNT(*) FROM V$PARAMETER GROUP BY TYPE;

4.2 参数修改方式

方式 命令 生效时机 适用场景
会话级 SP_SET_PARA_VALUE(1, '参数', 值) 当前会话 临时测试
系统级 SP_SET_PARA_VALUE(2, '参数', 值) 立即生效 生产环境调优
静态 SP_SET_PARA_VALUE(0, '参数', 值) 重启后生效 永久配置
-- 语法说明 -- SP_SET_PARA_VALUE(类型, '参数名', 新值) -- 类型: 0=静态, 1=会话, 2=系统动态

五、实战调优:针对您的环境

5.1 调优目标

根据 7.6G 内存环境,目标参数配置如下:

参数 当前值 目标值 调整理由
BUFFER 2000 3500 提高数据缓存命中率
DICT_BUF_SIZE 128 256 减少元数据磁盘读取
RLOG_BUF_SIZE 1024 2048 减少日志写入频率
RLOG_POOL_SIZE 256 512 支持更大并发事务
SORT_BUF_SIZE 10 4 避免内存浪费
CACHE_POOL_SIZE 200 256 缓存更多执行计划
RECYCLE 240 400 提升热数据重新加载速度
WORKER_THREADS 4 8 充分利用4核CPU
MAX_SESSIONS 100 150 支持更多并发连接

5.2 执行调优

# 连接数据库执行调优 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/SYSDBA@localhost:5236
-- 1. 备份当前参数(记录原值) -- 建议先记录当前值,以便回滚 -- 2. 动态调整参数(立即生效) SP_SET_PARA_VALUE(2, 'BUFFER', 3500); SP_SET_PARA_VALUE(2, 'DICT_BUF_SIZE', 256); SP_SET_PARA_VALUE(2, 'RLOG_BUF_SIZE', 2048); SP_SET_PARA_VALUE(2, 'RLOG_POOL_SIZE', 512); SP_SET_PARA_VALUE(2, 'SORT_BUF_SIZE', 4); SP_SET_PARA_VALUE(2, 'CACHE_POOL_SIZE', 256); SP_SET_PARA_VALUE(2, 'RECYCLE', 400); SP_SET_PARA_VALUE(2, 'WORKER_THREADS', 8); SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 150); -- 3. 验证调整结果 SELECT NAME, VALUE, SYS_VALUE, FILE_VALUE FROM V$PARAMETER WHERE NAME IN ('BUFFER', 'DICT_BUF_SIZE', 'WORKER_THREADS', 'MAX_SESSIONS');

image20260805095936091.png

5.3 一键调优脚本

cat > /tmp/db_tune.sql << 'EOF' SET ECHO ON; PROMPT ========== 调优前参数值 ========== SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN ('BUFFER','DICT_BUF_SIZE','RLOG_BUF_SIZE','RLOG_POOL_SIZE', 'SORT_BUF_SIZE','CACHE_POOL_SIZE','RECYCLE', 'WORKER_THREADS','MAX_SESSIONS'); PROMPT ========== 开始调优 ========== SP_SET_PARA_VALUE(2, 'BUFFER', 3500); SP_SET_PARA_VALUE(2, 'DICT_BUF_SIZE', 256); SP_SET_PARA_VALUE(2, 'RLOG_BUF_SIZE', 2048); SP_SET_PARA_VALUE(2, 'RLOG_POOL_SIZE', 512); SP_SET_PARA_VALUE(2, 'SORT_BUF_SIZE', 4); SP_SET_PARA_VALUE(2, 'CACHE_POOL_SIZE', 256); SP_SET_PARA_VALUE(2, 'RECYCLE', 400); SP_SET_PARA_VALUE(2, 'WORKER_THREADS', 8); SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 150); PROMPT ========== 调优后参数值 ========== SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME IN ('BUFFER','DICT_BUF_SIZE','RLOG_BUF_SIZE','RLOG_POOL_SIZE', 'SORT_BUF_SIZE','CACHE_POOL_SIZE','RECYCLE', 'WORKER_THREADS','MAX_SESSIONS'); PROMPT ========== 内存使用情况 ========== SELECT POOL_NAME, TOTAL_SIZE, USED_SIZE, ROUND(USED_SIZE/TOTAL_SIZE*100, 2) AS 使用率 FROM V$MEMORY_POOL; PROMPT ========== 调优完成 ========== EOF # 执行脚本 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/SYSDBA@localhost:5236 < /tmp/db_tune.sql

六、不同负载场景调优策略

6.1 OLTP(高并发事务)场景

-- 特征:大量小事务,高并发,响应时间敏感 SP_SET_PARA_VALUE(2, 'BUFFER', 2048); -- 适中 SP_SET_PARA_VALUE(2, 'RLOG_BUF_SIZE', 4096); -- 大日志缓冲 SP_SET_PARA_VALUE(2, 'WORKER_THREADS', 16); -- 高并发 SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 500); SP_SET_PARA_VALUE(2, 'SORT_BUF_SIZE', 2); -- 小排序

6.2 OLAP(数据分析)场景

-- 特征:大查询,复杂关联,排序量大 SP_SET_PARA_VALUE(2, 'BUFFER', 4096); -- 大缓存 SP_SET_PARA_VALUE(2, 'DICT_BUF_SIZE', 512); -- 大字典 SP_SET_PARA_VALUE(2, 'SORT_BUF_SIZE', 16); -- 大排序 SP_SET_PARA_VALUE(2, 'MAX_SESSIONS', 50); SP_SET_PARA_VALUE(2, 'RECYCLE', 600);

七、参数持久化验证

7.1 确认写入配置文件

grep -E "BUFFER|DICT_BUF_SIZE|WORKER_THREADS" /dmdata/data/DMTEST/dm.ini

image20260805110515168.png

7.2 重启后验证

# 重启服务 systemctl restart DmServiceDMTEST # 验证参数是否持久化 cd /home/dmdba/dmdbms/bin ./disql SYSDBA/SYSDBA@localhost:5236 << EOF SELECT NAME, VALUE, FILE_VALUE FROM V$PARAMETER WHERE NAME IN ('BUFFER', 'DICT_BUF_SIZE', 'WORKER_THREADS'); EOF

八、调优检查清单

检查项 命令 目标
BUFFER SELECT * FROM V$PARAMETER WHERE NAME=‘BUFFER’ 3500
DICT_BUF_SIZE SELECT * FROM V$PARAMETER WHERE NAME=‘DICT_BUF_SIZE’ 256
WORKER_THREADS SELECT * FROM V$PARAMETER WHERE NAME='WORKER_THREADS‘ 8
日志无报错 grep -i -B3 -A3 error dm_*.log 无ERROR

image20260805152310836.png

九、注意事项

  1. 调优前备份配置

    cp /dmdata/data/DMTEST/dm.ini /dmdata/data/DMTEST/dm.ini.bak
  2. 参数有单位差异RLOG_BUF_SIZE 单位是(默认32KB),SORT_BUF_SIZE 单位是 MB

  3. 动态参数立即生效:使用 SP_SET_PARA_VALUE(2, ...) 修改后不需要重启

  4. 系统预留内存:确保操作系统有足够内存,建议预留1-2G

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服