1. 内存

注意: 这些参数只能在数据库服务重新启动后生效。

shared_buffers
参数说明:设置GaussDB使用的共享内存大小。增加此参数的值会使GaussDB比系统默认设置需要更多的System V共享内存。需要重新设置共享内存和信号灯。

设置原则如下:

  • 服务器内存小于1GB时,建议设置shared_buffers占用内存比例小于25%,这样可以留下更多的内存空间给操作系统调用。
  • 服务器内存大于1GB小于4GB时,建议设置shared_buffers值为系统内存的25%。
  • 服务器内存大于4GB时,建议设置shared_buffers值为内存的40%以内。不建议设置shared_buffers的值超过40%,通常设置较大的shared_buffers需要同时增加checkpoint_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期。

取值范围:

  • 整型,128kB~操作系统支持的最大值。
  • 改变BLCKSZ的值会改变最小值。
  • 默认值:32MB,如果操作系统支持的共享内存小于32MB,则在初始化数据存储区时会自动调整为操作系统支持的最大值。

temp_buffers
参数说明:设置每个数据库会话使用的LOCAL临时缓冲区的大小。

  • 在每个会话的第一次使用临时表之前可以改变temp_buffers的值,之后的设置将是无效的。

  • 一个会话将按照temp_buffers给出的限制,根据需要分配临时缓冲区。如果在一个并不需要大量临时缓冲区的会话里设置一个大的数值,其开销只是一个缓冲区描述符的大小。当缓冲区被使用,就会额外消耗8192字节。

取值范围:

  • 整型(kB)
  • 默认值:8MB

max_prepared_transactions
参数说明:设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使GaussDB比系统默认设置需要更多的System V共享内存。

  • 当GaussDB部署为主备双机时,在备机上此参数的设置必须要高于或等于主机上的,否则无法在备机上进行查询操作。

取值范围:

  • 整型,为避免在准备步骤失败,此参数的值不能小于max_connections。
  • 默认值:10,表示关闭预备事务的特性。

work_mem
参数说明:设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY, DISTINCT 和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。

注意
对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work_mem的好几倍。

取值范围:

  • 整型(kB)
  • 默认值:1MB

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

设置原则:

  • 建议设置此参数的值大于work_mem,可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。
  • 当自动清理进程运行时,autovacuum_max_workers倍数的内存将会被分配,所以此时设置maintenance_work_mem的值不应该小于work_mem。

取值范围:

  • 整型(kB)
  • 默认值:16MB

max_stack_depth
参数说明:设置GaussDB执行堆栈的最大安全深度。需要这个安全界限是因为在服务器里,并非所有程序都检查了堆栈深度,只是在可能递规的过程,比如表达式计算这样的过程里面才进行检查。

设置原则:

  • 此参数的最佳设置是等于操作系统内核允许的最大值(就是 ulimit -s 的设置)。
  • 如果设置此参数的值大于实际的内核限制,则一个正在运行的递归函数可能会导致一个独立的服务器进程崩溃。在GaussDB能够检测内核限制的操作系统上(SUSE Linux上),将自动限制设置为一个不安全的值。
  • 因为并非所有的操作都能够检测,所以建议您在此设置一个明确的值。

取值范围:

  • 整型(kB)
  • 默认值:2MB,这个值相对比较小,不容易导致系统崩溃。但是这个值可能太小了,导致无法执行复杂的函数。

max_saved_plans
参数说明:设置服务器缓存的执行计划最大数量。该执行计划可能是在函数编译结果中的,也可能是由带提示的SELECT语句查询产生的。缓存过多的函数执行计划可能占用很大内存。将此参数设置为一个合理的值,有助于减少内存占用,提升系统性能。

取值范围:

  • 整型,取值必须大于等于-1。
  • 默认值:-1,表示不限制缓存的函数执行计划的数量。

max_catcache_tuple
参数说明:设置服务器缓存的系统表元组的最大数量。缓存过多的系统表元组可能占用很大内存。将此参数设置为一个合理的值,有助于减少内存占用,提升系统性能。

取值范围:

  • 整型,取值必须大于等于-1。
  • 默认值:-1,表示不限制缓存的系统表元组的数量。

max_relcache_entry
参数说明:设置服务器缓存的表模式信息的最大数量。缓存过多的表模式信息可能占用很大内存。将此参数设置为一个合理的值,有助于减少内存占用,提升系统性能。

取值范围:

  • 整型,取值必须大于等于-1。
  • 默认值:-1,表示不限制缓存的表模式信息的数量。

2. 磁盘空间

用于限制临时文件所占用的磁盘空间

temp_file_limit
参数说明:限制一个会话中可以使用的所有临时文件的总空间,例如排序和哈希表使用的临时文件,或游标所占用的临时文件。

此设置包括了任意时刻可以使用的临时文件的总和。

注意:

  • SQL 查询执行时使用的临时表空间不在此限制。

取值范围:

  • 整型(kB)
  • 默认值:-1,表示没有限制

3. 内核资源

这些参数是否生效依赖于操作系统的设置。

max_files_per_process
参数说明:设置每个服务器进程允许同时打开的最大文件数目。如果操作系统内核强制一个合理的数目,则不需要设置。

但是在一些平台上(特别是大多数BSD系统),内核允许独立进程打开比系统真正可以支持的数目大得多得文件数。如果您发现有的“Too many open files”这样的失败现象,请尝试缩小这个设置。

取值范围:

  • 整型
  • 默认值:1000

shared_preload_libraries
参数说明:此参数用于声明一个或者多个在服务器启动的时候预先装载的共享库,多个库名字之间用逗号分隔。比如 ‘$libdir/mylib’ 会在加载标准库目录中的库文件之前预先加载mylib.so(某些平台上可能是 mylib.sl)库文件。

可以用这个方法预先装载GaussDB的存储过程库,通常是使用 ‘$libdir/plXXX’ 语法。 XXX只能是pgsql,perl,tcl,python之一。

通过预先装载一个共享库并在需要的时候初始化它,可以避免第一次使用这个库的加载时间。但是启动每个服务器进程的时间可能会增加,即使进程从来没有使用过这些库。因此建议对那些将被大多数会话使用的库才使用这个选项。

注意:

  • 如果被声明的库不存在,GaussDB服务将会启动失败。
  • 每一个支持GaussDB的库都有一个特殊的标记用于保证兼容性。因此,不支持GaussDB的库不能用这种方法加载。

取值范围:

  • 字符串
  • 默认值:空

4. 后台写进程

后端写进程的功能就是把共享缓冲区中的脏数据(指共享缓冲区中新增或者修改的内容)写入到磁盘。目的是让数据库进程在进行用户查询时可以很少或者几乎不等待写动作的发生(写动作由后端写进程完成)。

后端写进程将持续的把脏页面刷新到磁盘上,所以在检查点到来的时候,只有几个页面需要刷新到磁盘上。但是这样还是增加了I/O的总净负荷,因为以前的检查点间隔里,一个重复弄脏的页面可能只会冲刷一次,而同一个间隔里,后端写进程可能会写好几次。在大多数情况下,连续的低负荷要比周期性的尖峰负荷好。

注意
这些参数只能在gaussdb命令行上设置或者通过gs_guc reload生效。

bgwriter_delay
参数说明:设置后端写进程写"脏"共享缓冲区之间的时间间隔。每一次,后端写进程都会为一些脏的缓冲区发出写操作(用bgwriter_lru_maxpages参数控制每次写的量),然后休眠bgwriter_delay毫秒后才再次启动。

在许多系统上,休眠延时的有效分辨率是10毫秒。因此,设置一个不是10的倍数的数值与把它设置为下一个10的倍数是一样的效果。

取值范围:

  • 整型(毫秒)
  • 默认值:200

bgwriter_lru_maxpages
参数说明:设置后端写进程每次可写入磁盘的“脏”缓存区的个数。

取值范围:

  • 整型,0~1000
  • 默认值:100

说明:

  • 此参数设置为0表示禁用后端写功能,禁用后端写功能不会对checkpoints产生影响。

bgwriter_lru_multiplier
参数说明:通过与已使用缓存区数目的乘积评估下次服务器需要的缓存区数目。

写“脏”缓存区到磁盘的数目取决于服务器最近几次使用的缓存区数目。最近的buffers数目的平均值乘以bgwriter_lru_multiplier是为了评估下次服务器进程需要的buffers数目。在有足够多的干净的、可用的缓存区之前,后端写进程会一直写“脏”缓存区的(每次写的缓存区数目不会超过bgwriter_lru_maxpages的值)。

设置bgwriter_lru_multiplier的值为1.0表示一种“实时”策略,其作用是精准预测下次写“脏”缓冲区的数目。设置为较大的值可以应对突然的需求高峰,而较小的值则可以让服务器进程执行更多的写操作。

设置较小的bgwriter_lru_maxpages和bgwriter_lru_multiplier会减小后端写进程导致的额外I/O开销,但是服务器进程必须自己发出写操作,增加了对查询的响应时间。

取值范围:

  • 浮点型
  • 默认值:2.0

5. 异步IO

此参数的设置只针对位图索引生效。普通的索引扫描(index scan)一次只读一条索引项,使得一个PAGE有可能被多次访问,而位图索引一次性将满足条件的索引项全部取出并在内存中进行排序,然后根据取出的索引项访问表数据。

effective_io_concurrency
参数说明:设置GaussDB可以同时执行的并发磁盘I/O操作的数量。提高此数值还可以增加单个会话中的并发磁盘I/O操作的数量。

此参数的设置取决于数据库使用RAID 0或者RAID 1中的磁盘个数(而对于RAID 5,同样的磁盘个数发挥的效果有限)。在一个会话中,如果数据库经常要处理并发查询,则建议设置此参数的值较低,这样可以使磁盘阵列处于繁忙状态(对磁盘阵列的利用率高)。

对于一些特殊的系统,例如基于内存的存储系统或者磁盘阵列受总线带宽的制约,此参数的最佳设置应该是I/O可达到的最大值。

异步I/O的设置依赖于操作系统是否支持posix_fadvise功能。如果操作系统不支持此功能,则只能设置此参数的值为0,否则将出错。

注意:

  • 设置较高的值将会导致额外的CPU开销,建议通过实验来得到最佳设置。

取值范围:

  • 整型,1~1000
  • 默认值:1

gaussdb 数据库参数说明【内存、磁盘空间、内核资源、后台写进程、异步IO】【03】相关推荐

  1. Shell - 监控某个进程的内存占用情况、主机CPU、磁盘空间等信息以及守护进程

    文章目录 脚本 启动的两种方式 方式一 注册到系统Cron 方式二 运行结果 linux内存.cpu.磁盘IO 脚本 #!/bin/sh ############################## ...

  2. linux查看内存、CPU占用资源最多的进程

    [内存占用] #利用ps命令,默认使用ps参数会显示的结果 ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 ...

  3. 物理磁盘空间使用已满导致数据库hang起

    情况描述 一天公司小张过来咨询,说是数据库查询报错了:乍一看好像是数据库有坏快了,为了排查更加详细的错误信息,决定查看一下告警日志,发现问题所在,原来是数据库的物理磁盘空间满了 Writing to ...

  4. 由于文件组 'PRIMARY 中的磁盘空间不足,无法为数据库 'newnet' 分配新页。请删除文件组中的对象、将其他文件添加到文件组或者为文件组中的现有文件启用自动增长,以便增加必要的空间。

    1.确定数据库所在的磁盘空间足够用. 2.数据库->属性->文件->自动增长->最大文件大小->不限制文件增长.

  5. 国产分布式数据库StarDB核心技术 一:内核分解之数据分片

    前言 作者:徐力权(StarDB架构师) 数据分片是分布式数据库主要特性之一,好的分片设计能让数据库服务器资源得到最大化利用,提升系统吞吐量.灵活的分片策略实现是StarDB的重要特性之一,StarD ...

  6. SQL Server 磁盘空间告急(磁盘扩容)转载

    SQL Server 磁盘空间告急(磁盘扩容)转载 一.背景 在线上系统中,如果我们发现存放数据库文件的磁盘空间不够,我们应该怎么办呢?新买一个硬盘挂载上去可以嘛?(linux下可以直接挂载硬盘进行扩 ...

  7. RocketMQ 部署不当导致磁盘空间不释放

    背景 生产环境采用 RocketMQ 三主三从集群搭建,6 个实例部署在 3 台 Linux 服务器上(节省资源),每台服务器部署一主一从,生产上运行一段时间后,发现磁盘空间报警,发现df与du显示的 ...

  8. Macbook磁盘空间不足怎么办?

    Macbook磁盘空间不足的解决方法 Macbook磁盘空间不足的解决方法 一. 手动清理方法 基础知识 操作步骤 二. 使用清理软件 三.及时更新.升级系统 四.充分利用SD卡槽 五.外接硬盘(移动 ...

  9. MYSQL Delete删除数据后物理磁盘空间未减少解决

    起因: 数据表中保存日志信息比较多,一个表站用好几个G的空间,想清理掉三个月以前的数据,但清理后发现物理磁盘站用空间并没有减少. 原因是使用delete删除的时候,mysql并没有把数据文件删除,而是 ...

最新文章

  1. logisim设计alu设计报告_【新】PowerBI 报告设计思想 结构布局篇
  2. Mybatis如何打印sql语句
  3. php面向对象异常处理,PHP 错误和异常处理(下)
  4. Mosquitto 0 15 开源MQTT v3 1 Broker
  5. 【Arthas】Arthas dump导出加载类
  6. linux笔记:文件系统管理-fdisk分区
  7. 可靠的Windows版Redis
  8. Linux --- 常用命令
  9. eslint 换行_给 eslint 写一个插件
  10. C#实现模糊PID算法的代码
  11. 安装VS之后,excel每次启动都会配置Visual Studio的解决办法
  12. Egg.js VS Thinkjs 简单分析使用
  13. 百度统计后台页面点击图提示无法建立连接
  14. Will you pity a beggar ? What do you think of them ?
  15. OpenDaylight是什么?
  16. 产品分析中如何去做用户调研
  17. C语言switch语句用法详解
  18. shell sleep 睡眠命令
  19. 图像RGB与数组关系理解
  20. 2022年低压电工找解析及低压电工模拟考试题

热门文章

  1. OpenAI 直播大秀语音指挥 AI 自动编程
  2. Oracle主库redo传输至备机,oracle物理DG管理-redo数据传输,应用与三种模式
  3. 定位服务器已关闭里面显示的时间,测试显示iPhone关闭定位服务仍记录用户位置...
  4. Python面向对象练习-士兵开枪问题
  5. Doing Math with Python读书笔记-第5章:Playing with Sets and Probability
  6. Android 客户端常见漏洞
  7. 【暴力模拟】二阶魔方旋转
  8. python包:Dask介绍
  9. 用R语言进行分位数回归:基础篇
  10. html界面出现 section,如何在HTML5中正确使用“ section”标签?