达梦数据库参数

一、内存相关

达梦数据库的内存主要包括共享内存池、缓冲区(数据缓冲区、日志缓冲区、字典缓冲区、sql缓冲区)、其他内存池构成(排序区、hash区、会话内存池,虚拟机内存池等)构成。其中排序区、hash区是从共享内存池中申请资源,会话内存池,虚拟机内存池是从操作系统内存中申请资源。

(一)共享内存池

共享内存池是 DM Server 在启动时从操作系统申请的一大片内存。

在 DM Server 的运行期间,经常会申请与释放小片内存,而向操作系统申请和释放内存时需要发出系统调用,此时可能会引起线程切换,降低系统运行效率。

采用共享内存池则可一次向操作系统申请一片较大内存,即为内存池,当系统在运行过程中需要申请内存时,可在共享内存池内进行申请,当用完该内存时,再释放掉,即归还给共享内存池。

共享内存池相当于一个库存,一个保障。其他区域(如排序区、hash区等)不够的时候,可以向共享内存池申请内存,当其用完时还给共享内存池。
当共享内存池也不够的时候,则向操作系统申请,MEMORY_EXTENT_SIZE指定了共享内存池每次扩展的大小。

与共享内存池相关的参数如下:

1. MEMORY_POOL

共享内存池初始值,以M为单位,默认200。有效值范围:64~67108864。在物理内存较大的情况下,比如大于64G,可以将MEMORY_POOL设置为2048,即2G(也就是说高并发时应调大,避免频繁向os申请内存)(例子:一个cpu:4路8核,内存:256,磁盘阵列:1T密集交易型数据库服务器的MEMORY_POOL参数可以设置为2048,即2G)


2. MEMORY_EXTENT_SIZE

共享内存池每次扩充的大小


3.MEMORY_TARGET

共享内存池能扩充到的最大大小,以M为单位,默认为0,即没有限制最大值。

(二)数据缓冲区

主要包含Normal缓冲区、Keep缓冲区、RECYCLE缓冲区、FAST缓冲区4种。

1.NORMAL(普通) 缓冲区

NORMAL(普通) 缓冲区主要是提供给系统处理的一些数据页,没有特定指定缓冲区的情况下, 默认缓冲区为 NORMAL。用户可以在创建表空间或修改表空间时,指定表空间属于 NORMAL 或 KEEP 缓冲区。默认是NORMAL 。

与NORMAL(普通) 缓冲区相关的参数如下:

(1)BUFFER

系统缓冲区大小,以兆为单位。推荐值:系统缓冲区大小为可用物理内存的 60%~80%。有 效值范围(8~1048576)

(2)MAX_BUFFER

数据缓冲区扩展最大值,建议配置成=BUFFER

(3)BUFFER_POOLS

BUFFER 系统分区数(一般配置为质数),每个 BUFFER 分区的大
小为 BUFFER/BUFFER_POOLS,并发较大的系统需要配置这个参数,减少数据缓冲区并发冲突,建议BUFFER/ BUFFER_POOLS>=500MB。在内存不大的情况下,建议调小该值。

(例子:一个cpu:4路8核,内存:256,磁盘阵列:1T密集交易型数据库服务器的BUFFER_POOLS参数可以设置为101,即建议BUFFER/ BUFFER_POOLS>=500MB)

2.KEEP(驻留)缓冲区

KEEP (驻留) 的特性是对缓冲区中的数据页很少或几乎不怎么淘汰出去, 主要针对用户的应用是否需要经常处在内存当中,如果是这种情况,可以指定缓冲区为KEEP。达梦的KEEP 缓冲区只能在表空间级别进行设置。

(1)KEEP

KEEP缓冲区大小,以兆为单位。有效值范围 (8~1048576)

3.RECYCLE(临时) 缓冲区

RECYCLE(临时) 缓冲区供临时表空间使用,用户不能指定使用 RECYCLE(临时) 和 FAST(回滚) 缓冲区的表或表空间。RECYCLE和FAST的是数据库系统自动调节的。

相关的参数如下:

(1)RECYCLE

RECYCLE(临时)缓冲区大小,以M为单位。有效值范围(8~1048576),建议设置为500M以上,高并发或大量使用with,临时表,排序等应该调大(例子:一个cpu:4路8核,内存:256,磁盘阵列:1T密集交易型数据库服务器的BRECYCLE参数可以设置为5000,即5G)

(2)RECYCLE_POOLS

RECYCLE 缓冲区分区数,每个 RECYCLE 分区 的大小为 RECYCLE/RECYCLE_POOLS。有效 值范围(1~512)

4.FAST(回滚) 缓冲区

FAST(回滚) 缓冲区根据用户指定的 FAST_POOL_PAGES 大小由系统自动进行管理,用户不能指定使用 RECYCLE 和 FAST 缓冲区的表或表空间。

(1)FAST_POOL_PAGES

快速缓冲区页数。默认值3000,有效值范围(0~99999)。 FAST_POOL_PAGES 的值最多不能超过 BUFFER 总页数的一半,如果超过,系统会自 动调整为 BUFFER 总页数的一半

(三)日志缓冲区

日志缓冲区是用于存放重做日志的内存缓冲区。为了避免由于直接的磁盘 IO 而使系统性能受到影响,系统在运行过程中产生的日志并不会立即被写入磁盘,而是和数据页一样,先将其放置到日志缓冲区中。

相关参数:

1. RLOG_POOL_SIZE 

最大日志缓冲区大小(以 M 为单位)。默认为128M 。
一般在内存小于16G的情况下,建议设置为256M,

内存大于16G,小于64G,建议设置为1024M,

当内存大于64G时,建议设置为2048M。

(四)字典缓冲区

字典缓冲区主要存储一些数据字典信息,如模式信息、表信息、列信息、触发器信息等。

相关参数:

1. DICT_BUF_SIZE

字典缓冲区大小,以 M 为单位,默认为5M,如果数据库中对象数量较多,或者存在大量分区表,可适当调大。建议改成50M以上。

(五)SQL缓冲区

SQL 缓冲区提供在执行 SQL 语句过程中所需要的内存,包括计划、SQL 语句和结果集缓存。

有关参数:

CACHE_POOL_SIZE

SQL 缓冲池大小,以兆为单位。默认值20m ,有效值范围: 32 位平台下为(1~2048);64 位平台下为 (1~67108864)。单位:MB
一般在内存小于等于16G的情况下,建议设置为200M
内存大于16G,小于等于64G,建议设置为1024M
当内存大于64G时,建议设置为2048M。

一般配置为1000-4000

(六)排序区

相关参数:

1.SORT_FLAG

排序机制,默认为0,参数含义:0:原排序机制;1:新排序机制。

在内存大于64G时建议使用新排序机制,其他情况使用原排序机制。

2.SORT_BUF_SIZE

原排序机制下,排序缓存区最大值,以 M 为单 位。有效值范围(1~2048)

在内存小于64G时建议设置为10M,大于64G时建议设置为512M。

3.SORT_BUF_GLOBAL_SIZE

新排序机制下,排序全局内存使用上限,以 M 为单位。有效值范围(10~4294967294)

默认为1000M。当内存小于16G时,建议设置为500M,大于16G小于64G时建议设置为2000,当内存大于64G时,建议设置为5120M。

4.SORT_BLK_SIZE

默认为 1M,新排序机制下,每个排序分片空间的大小,必须小于 SORT_BUF_GLOBAL_SIZE。

SORT_BLK_SIZE一般不需要设置太大,该内存片大小能容纳1万至5万行待排序的数据即可。该值大小不会超过SORT_BUF_SIZE,超过会重置为SORT_BUF_SIZE。为了保证归并排序的效率,对于大内存排序缓冲区的总的分片个数系统上限为10000个,因此,当SORT_BUF_GLOBAL_SIZE足够大的时候,为了保证大内存排序缓冲区能容纳足够多的数据,需要适当调大SORT_BLK_SIZE。例如,当SORT_BLK_SIZE为1时,SORT_BUF_GLOBAL_SIZE的最大可用值为10000。如果SORT_BUF_GLOBAL_SIZE需要20000M可用空间排序时,需要设置SORT_BLK_SIZE最小为2。

(七)hash区

1.HJ_BUF_SIZE

单个hash使用的内存。单个 HASH 连接操作符的数据总缓存大小,以 兆为单位。有效值范围(2~100000),默认50m

有大表的hash连接应调大

(1)在服务器物理内存小于等于16GB的情况下,建议使用默认值50M;
(2)当物理内存大于16GB,小于等于64GB时,建议将HJ_BUF_SIZE  设置为500M;
(3)当物理内存大于64GB时,建议将HJ_BUF_SIZE 设置为1000M

2.HJ_BUF_GLOBAL_SIZE

哈希连接使用的内存空间的上限,以兆为单位

HASH 连接操作符的数据总缓存大小(>= HJ_BUF_SIZE),系统级参数,以兆为单位。 有效值范围(10~500000),默认值500m

高并发,hash操作多的话应调大

(1)在服务器物理内存小于等于16GB的情况下,建议使用默认值500M。
(2)当物理内存大于16GB,小于64GB时 。 建议将HJ_BUF_GLOBAL_SIZE 设置为10000M以上。
(3)当物理内存大于64GB时,建议将HJ_BUF_GLOBAL_SIZE 设置为设置为15000M以上。

3.HAGR_BUF_SIZE

单个 HAGRDIST、集合操作、SPL2NTTS2以及 HTAB 操作符的数据总缓存大小,默认值50M

(1)当物理内存大于16GB,小于64GB时,建议将HAGR_BUF_SIZE设置为500M
(2)当物理内存大于64GB时,建议将HAGR_BUF_SIZE 设置为1000M

4.HAGR_BUF_GLOBAL_SIZE

HAGR、DIST、集合操作、SPL2、NTTS2 以及HTAB 操作符的数据总缓存大小(>= HAGR_BUF_SIZE),默认为500 M。

(1)当物理内存大于16GB,小于64GB时,建议将HAGR_BUF_GLOBAL_SIZE设置为10000M以上。
(2)当物理内存大于
64GB时,建议将HAGR_BUF_GLOBAL_SIZE设置为15000M以上。

二、线程相关

(一)工作线程

Dm数据库是单进程多线程结构,当有一个session过来的时候,dm会专门为这个session安排一个工作线程。

相关参数:

WORKER_THREADS:
默认值是2
建议改成逻辑CPU数量

(二)任务线程

当工作线程满负荷的时候,如果还有会话连接进来,此时任务线程将新的会话任务放到任务队列中,待工作线程完成之后,工作线程就会去任务队列中领任务……循环往复。任务线程相当于前台,接待会话,并将这些任务分配好,放到任务队列中,工作线程就从任务队列中取任务来完成。工作线程是实实在在干活的,任务线程是接待session会话以及分配任务的。

TASK_THREADS
默认值是4
1)逻辑CPU数量少于8时设置为4
2)逻辑CPU数量大于等于64时,设置为16

MORY _TARGET :共享内存池最大值

是 DM Seer 在启动时从操作系统申请的一大片内存。在 DM Server 的

运行期间,经常会申请与释放小片内存,而向操作系统申请和释放内存时需要发出系统调用,

此时可能会引起线程切换,降低系统运行效率。采用共享内存池则可一次向操作系统申请一

片较大内为内存池,当系统在运行过程中需要申请内存时,可在共享内存池内进行申

请,当用完该内存时,再释放掉,即归还给共享内存池

你可能感兴趣的:(数据库)