数据仓库服务 GAUSSDB(DWS)-数据库系统参数调优:数据库内存相关参数

时间:2024-12-02 17:18:23

数据库内存相关参数

表1 数据库内存相关参数

GUC参数

描述

建议

max_process_memory

max_process_memory设置单个CN/DN可用的最大物理内存。

  • DN上该数值需要根据系统物理内存及单节点部署主DN个数决定的。计算公式如下:(物理内存大小 – vm.min_free_kbytes)* 0.8 / (n+主DN个数)。该参数目的是尽可能保证系统的可靠性,不会因数据库内存膨胀导致节点OOM。这个公式中提到vm.min_free_kbytes,其含义是预留操作系统内存供内核使用,通常用作操作系统内核中通信收发内存分配,至少为5%内存。即, max_process_memory=物理内存*0.8/(n+主DN个数),其中,当集群规模小于256时, n=1;当集群规模大于256且小于512时, n=2;当集群规模超过512时,n=3。
  • CN上该数值内存可设置与DN数值一样。
  • RAM :集群规划时分配给集群的最大使用内存。

shared_buffers

设置DWS使用的共享内存大小。增加此参数的值会使DWS比系统默认设置需要更多的System V共享内存。

建议设置shared_buffers值为内存的40%以内。行存列存分开对待。行存设大,列存设小。列存:(单服务器内存/单服务器DN个数)*0.4*0.25。

如果设置较大的shared_buffers需要同时增加checkpoint_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期。

cstore_buffers

设置列存和OBS、HDFS外表列存格式(orc、parquet、carbondata)所使用的共享缓冲区的大小。

列存表使用cstore_buffers设置的共享缓冲区,几乎不用shared_buffers。因此在列存表为主的场景中,应减少shared_buffers,增加cstore_buffers。

OBS、HDFS外表使用cstore_buffers设置ORC、Parquet、Carbondata的元数据和数据的缓存,元数据缓存大小为cstore_buffers的1/4,最大不超过2GB,其余缓存空间为列存数据和外表列存格式数据共享使用。

work_mem

设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。

该参数默认小规格内存为512MB, 大规格内存为2GB(max_process_memory大于等于30GB为大规格内存,否则为小规格内存)。

建议参数work_mem依据查询特点和并发来确定,一旦work_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。

  • 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work_mem=50%内存/10。
  • 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work_mem=50%内存/5。
  • 对于并发场景,建议work_mem=串行下的work_mem/物理并发数。

maintenance_work_mem

设置维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。

建议设置此参数的值等于work_mem,可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。

当自动清理进程运行时,autovacuum_max_workers倍数的内存将会被分配,所以此时设置maintenance_work_mem的值应该不小于work_mem。

support.huaweicloud.com/devg-830-dws/dws_04_0970.html