0 说明
安装好数据库后,需要配置好白名单和数据库参数后才能够正常使用。本文主要绕数据库的安全访问、性能优化、可靠性保障、运维审计等部分,系统梳理了白名单、内存参数、WAL参数、连接数相关参数等关键配置项,可以显著提升数据库安全性、性能及可维护性。
1 白名单
白名单用于限制可连接数据库的客户端 IP,是数据库安全防护的基础手段之一。通过指定允许连接的 IP 地址及认证方式,可有效防止未授权 IP 的非法访问,提升数据库的网络访问安全性。
# 允许192.168.1.100访问
gs_guc reload -N all -I all -h "host dbname username 192.168.1.100/32 sha256"
# 允许192.168.1网段ip访问
gs_guc reload -N all -I all -h "host dbname username 192.168.1.0/32 sha256"
# 允许所有ip访问
gs_guc reload -N all -I all -h 'host all all 0.0.0.0/32 sha256'
配置vip后,也建议将vip加入白名单。
2 参数优化
设置完所有参数后,需要重启数据库,让POSTMASTER类型的参数生效。
2.1 内存
内存是数据库性能的关键瓶颈之一,针对内存相关参数进行优化,这些参数控制数据库对系统内存的分配与使用,需根据服务器实际内存大小合理配置,避免内存不足导致的性能下降或内存浪费。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| max_process_memory | >=64GB:RAM * 80% / 实例个数 <64GB: RAM * 70% / 实例个数 <8GB: RAM * 60% / 实例个数 <4GB: 默认 | 12GB | POSTMASTER |
| shared_buffers | max_process_memory * 40% | 8MB | POSTMASTER |
| work_mem | >=64GB: 64MB <64GB: 32MB <8GB:16MB <4GB:默认 | 64MB | USERSET |
| maintenance_work_mem | >=64GB: 2GB <64GB: 1GB <8GB:512MB <4GB:默认 | 16MB | USERSET |
| wal_buffers | >=64GB: 1GB <64GB: 512GB <8GB:128MB <4GB:默认 | 16MB | POSTMASTER |
| standby_shared_buffers_fraction | 1 | 0.3 | SIGHUP |
| local_syscache_threshold | 32MB | 256MB | SIGHUP |
参数说明:
- max_process_memory: 一个数据库节点可用的最大物理内存
- shared_buffers: openGauss使用的共享内存大小
- work_mem: 内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小
- maintenance_work_mem: 设置在维护性操作可使用的最大的内存
- cstore_buffers: 列存所使用的共享缓冲区的大小
- wal_buffers: 用于存放WAL数据的共享内存空间的XLOG_BLCKSZ数
- standby_shared_buffers_fraction: 备库所在服务器使用shared_buffers内存缓冲区大小的比例
- local_syscache_threshold: 控制session动态内存大小
假设内存小于8G,设置参数:
gs_guc set -I all -N all -c "max_process_memory=4GB"
gs_guc set -I all -N all -c "shared_buffers=1GB"
gs_guc set -I all -N all -c "cstore_buffers=16MB"
gs_guc set -I all -N all -c "wal_buffers=128MB"
gs_guc reload -I all -N all -c "work_mem=16MB"
gs_guc reload -I all -N all -c "maintenance_work_mem=512MB"
gs_guc reload -I all -N all -c "standby_shared_buffers_fraction=1"
gs_guc reload -I all -N all -c "local_syscache_threshold=32MB"
2.2 连接数
连接数参数控制数据库允许的并发连接及复制相关连接数量,直接影响数据库的并发处理能力。配置过高可能导致资源耗尽,过低则限制业务并发量。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| max_connections | >=64GB: 3000 <64GB: 1000 <8GB:500 <4GB:默认 | 5000 | POSTMASTER |
| max_replication_slots | 32 | 8 | POSTMASTER |
| max_wal_senders | 16 | 16 | POSTMASTER |
| max_prepared_transactions | >=64GB: 3000 <64GB: 1000 <8GB:500 <4GB:默认 | 10 | POSTMASTER |
参数说明:
- max_connections: 最大连接数
- max_replication_slots: 当前物理流复制槽数+所需的逻辑复制槽数
- max_wal_senders: 事务日志发送进程的并发连接最大数量,不可大于等于max_connections
- max_prepared_transactions: 同时处于"预备"状态的事务的最大数目
假设内存小于8G,设置参数:
gs_guc set -I all -N all -c "max_connections=500"
gs_guc set -I all -N all -c "max_replication_slots=32"
gs_guc set -I all -N all -c "max_wal_senders=16"
gs_guc set -I all -N all -c "max_prepared_transactions=500"
2.3 WAL相关
WAL(预写式日志)是数据库数据一致性和故障恢复的核心机制,优化日志写入策略(如关闭full_page_writes)、增加日志保留段(wal_keep_segments=1024),平衡 WAL 的可靠性、性能及存储开销。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| wal_level | hot_standby | hot_standby | POSTMASTER |
| full_page_writes | off | on | SIGHUP |
| wal_log_hints | off | on | POSTMASTER |
| wal_keep_segments | 1024 | 16 | SIGHUP |
| wal_sender_timeout | 10s | 6s | SIGHUP |
| xloginsert_locks | 48 | 8 | POSTMASTER |
| advance_xlog_file_num | 10 | 0 | POSTMASTER |
| archive_mode | on | off | SIGHUP |
| archive_dest | /archive | SIGHUP |
参数说明:
- wal_level: 写入WAL信息量的级别(minimal、archive、hot_standby、logical)
- full_page_writes: 在检查点之后对页面的第一次修改时,是否将每个磁盘页面的全部内容写到WAL日志中
- wal_log_hints: 检查点之后对页面的第一次修改为页面上元组hint bits的修改时,是否将整个页面的全部内容写到WAL日志中
- wal_keep_segments: Xlog日志文件段数量,“pg_xlog”目录下保留事务日志文件的最小数目
- wal_sender_timeout: 设置本端等待事务日志接收端接收日志的最大等待时间。
- xloginsert_locks: 并发写预写式日志锁的个数
- advance_xlog_file_num: 在后台周期性地提前初始化xlog文件的数目
- archive_mode: 是否进行归档操作
- archive_dest: 由管理员设置的用于归档WAL日志的目录,建议归档路径为绝对路径
设置参数:
gs_guc set -I all -N all -c "wal_level=hot_standby"
gs_guc set -I all -N all -c "wal_log_hints=off"
gs_guc set -I all -N all -c "xloginsert_locks=48"
gs_guc set -I all -N all -c "advance_xlog_file_num=10"
gs_guc reload -I all -N all -c "full_page_writes=off"
gs_guc reload -I all -N all -c "wal_keep_segments=1024"
gs_guc reload -I all -N all -c "wal_sender_timeout=10s"
gs_guc reload -N all -I all -c "archive_mode=on"
gs_guc reload -N all -I all -c "archive_dest='/archive'" #根据实际设置
2.4 数据库日志
数据库日志记录系统运行状态、错误信息及 SQL 执行情况,是问题排查、性能分析的重要依据,相关参数配置日志收集、存储及内容格式。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| logging_collector | on | on | POSTMASTER |
| log_filename | postgresql-%Y-%m-%d_%H%M%S.log | postgresql-%Y-%m-%d_%H%M%S.log | SIGHUP |
| log_duration | off | off | SUPERUSER |
| log_line_prefix | %m %u %d %r %p %S | %m %c %d %p %a %x %n %e | SIGHUP |
| log_truncate_on_rotation | off | off | SIGHUP |
| log_checkpoints | on | off | SIGHUP |
| temp_file_limit | 100GB | -1 | SUSET |
参数说明
- logging_collector: 控制开启后端日志收集进程logger进行日志收集。该进程捕获发送到stderr或csvlog的日志消息并写入日志文件
- log_filename: 数据库日志名称
- log_duration: 记录每个已完成SQL语句的执行时间
- log_line_prefix: 每条日志信息的前缀格式
- log_truncate_on_rotation: 设置日志消息的写入方式
- log_checkpoints: 在服务器日志中记录检查点和重启点的信息
- temp_file_limit: 限制一个会话中,触发下盘操作时,单个下盘文件的空间大小。例如一次会话中,排序和哈希表使用的临时文件,或者游标占用的临时文件
设置参数:
gs_guc set -I all -N all -c "logging_collector=on"
gs_guc set -I all -N all -c "log_duration=off"
gs_guc reload -I all -N all -c "log_filename=postgresql-%Y-%m-%d_%H%M%S.log"
gs_guc reload -I all -N all -c "log_line_prefix='%m %u %d %r %p %S'"
gs_guc reload -I all -N all -c "log_truncate_on_rotation=off"
gs_guc reload -I all -N all -c "log_checkpoints=on"
gs_guc reload -I all -N all -c "temp_file_limit=10GB"
2.5 统计分析
自动清理(VACUUM)和分析(ANALYZE)操作对维持表性能(如索引效率、统计信息准确性)至关重要,设置参数优化自动维护任务的执行策略。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| vacuum_cost_limit | 1000 | 200 | USER |
| autovacuum_max_workers | 10 | 3 | POSTMASTER |
| autovacuum_naptime | 20s | 600s | SIGHUP |
| autovacuum_vacuum_cost_delay | 10 | 20 | SIGHUP |
| autovacuum_vacuum_scale_factor | 0.05 | 0.2 | SIGHUP |
| autovacuum_analyze_scale_factor | 0.02 | 0.1 | SIGHUP |
| autovacuum_vacuum_threshold | 200 | 50 | SIGHUP |
| autovacuum_analyze_threshold | 200 | 50 | SIGHUP |
| autovacuum_io_limits | 104857600 | -1 | SIGHUP |
参数说明:
- vacuum_cost_limit: 清理进程休眠的开销限制
- autovacuum_max_workers: 能同时运行的自动清理线程的最大数量
- autovacuum_naptime: 两次自动清理操作的时间间隔
- autovacuum_vacuum_cost_delay: 自动VACUUM操作里使用的开销延迟数值
- autovacuum_vacuum_scale_factor: 触发一个VACUUM时增加到autovacuum_vacuum_threshold的表大小的缩放系数
- autovacuum_analyze_scale_factor: 触发一个ANALYZE时增加到autovacuum_analyze_threshold的表大小的缩放系数
- autovacuum_vacuum_threshold: 触发VACUUM的阈值
- autovacuum_analyze_threshold: 触发ANALYZE操作的阈值
- autovacuum_io_limits: 控制autovacuum进程每秒触发IO的上限
参数设置:
gs_guc set -I all -N all -c "autovacuum_max_workers=10"
gs_guc reload -I all -N all -c "vacuum_cost_limit=1000"
gs_guc reload -I all -N all -c "autovacuum_naptime=20s"
gs_guc reload -I all -N all -c "autovacuum_vacuum_cost_delay=10"
gs_guc reload -I all -N all -c "autovacuum_vacuum_scale_factor=0.05"
gs_guc reload -I all -N all -c "autovacuum_analyze_scale_factor=0.02"
gs_guc reload -I all -N all -c "autovacuum_vacuum_threshold=200"
gs_guc reload -I all -N all -c "autovacuum_analyze_threshold=200"
gs_guc reload -I all -N all -c "autovacuum_io_limits=104857600"
2.6 复制
主备复制场景参数优化,确保主备数据同步的可靠性和效率,减少复制延迟对业务的影响。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| most_available_sync | on | off | SIGHUP |
| wal_receiver_timeout | 60s | 6s | SIGHUP |
| catchup2normal_wait_time | 0 | -1 | SIGHUP |
| enable_slot_log | on | off | USERSET |
参数说明:
- most_available_sync: 在备机同步失败时,是否阻塞主机
- wal_receiver_timeout: 从主机接收数据的最大等待时间
- catchup2normal_wait_time: 单同步备机情况下,控制备机数据追赶(catchup)阻塞主机的最长时间
- enable_slot_log: 是否开启逻辑复制槽主备同步特性
设置参数:
gs_guc reload -I all -N all -c "most_available_sync=on" gs_guc reload -I all -N all -c "wal_receiver_timeout=60s" gs_guc reload -I all -N all -c "catchup2normal_wait_time=0" gs_guc reload -I all -N all -c "enable_slot_log=on"
2.7 检查点
检查点是将内存脏页刷写到磁盘的关键操作,影响数据库恢复速度和 IO 负载,配置参数控制检查点的频率和执行效率。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| checkpoint_segments | 1024 | 64 | SIGHUP |
| checkpoint_completion_target | 0.8 | 0.5 | SIGHUP |
参数说明:
- checkpoint_segments: checkpoint_timeout周期内所保留的最少WAL日志段文件数量
- checkpoint_completion_target: 检查点完成的目标
设置参数:
gs_guc reload -I all -N all -c "checkpoint_segments=1024" gs_guc reload -I all -N all -c "checkpoint_completion_target=0.8"
2.8 查询
下列参数是优化 SQL 查询的执行效率和会话管理,包括查询优化开关、会话超时、慢 SQL 日志等。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| enable_opfusion | off | on | USERSET |
| session_timeout | 0 | 10min | USERSET |
| instr_unique_sql_count | 200000 | 100 | SIGHUP |
| track_activity_query_size | 2048 | 1024 | POSTMASTER |
| log_min_duration_statement | 200 | 30min | SUSET |
参数说明:
- enable_opfusion: 控制是否对简单增删改查进行优化
- session_timeout: 与服务器建立链接后,不进行任何操作的最长时间,0表示关闭超时设置
- instr_unique_sql_count: 控制系统中unique sql信息实时收集功能。(由50000 改为 200000)
- track_activity_query_size: 一个活动会话的当前正在执行命令的字节数
- log_min_duration_statement: 超过200ms的慢sql记录到statement_history中
设置参数:
gs_guc set -I all -N all -c "track_activity_query_size=2048"
gs_guc reload -I all -N all -c "enable_opfusion=off"
gs_guc reload -I all -N all -c "session_timeout='0'"
gs_guc reload -I all -N all -c "instr_unique_sql_count=200000"
gs_guc reload -I all -N all -c "log_min_duration_statement=200"
2.9 安全
涉及用户密码安全,通过控制密码加密方式、有效期、重用规则等增强账户安全性。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| password_encryption_type | 1 | 2 | SIGHUP |
| password_reuse_time | 60 | 60 | SIGHUP |
| password_lock_time | 1 | 1 | SIGHUP |
| password_effect_time | 36500 | 90 | SIGHUP |
参数说明:
- password_encryption_type: 采用何种加密方式对用户密码进行加密存储
- password_reuse_time: 对新密码进行可重用天数检查
- password_lock_time: 帐户被锁定后自动解锁的时间
- password_effect_time: 帐户密码的有效时间
设置参数:
gs_guc reload -I all -N all -c "password_encryption_type=1" gs_guc reload -I all -N all -c "password_reuse_time=60" gs_guc reload -I all -N all -c "password_lock_time=1" gs_guc reload -I all -N all -c "password_effect_time=36500"
2.10 审计
审计功能用于记录数据库的关键操作(如登录、权限变更、数据修改),满足合规性要求并辅助安全事件追溯。下列参数控制审计日志的开启、内容及存储策略。
不过在生产中数据库侧一般是不开审计的,通常是堡垒机层面做审计。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| audit_enabled | on | on | SIGHUP |
| audit_login_logout | 7 | 7 | SIGHUP |
| audit_grant_revoke | 1 | 1 | SIGHUP |
| audit_database_process | 0 | 1 | SIGHUP |
| audit_user_locked | 0 | 1 | SIGHUP |
| audit_user_violation | 0 | 0 | SIGHUP |
| audit_system_object | 0 | 12295 | SIGHUP |
| audit_dml_state_select | 0 | 0 | SIGHUP |
| audit_dml_state | 0 | 0 | SIGHUP |
| audit_function_exec | 0 | 0 | SIGHUP |
| audit_copy_exec | 0 | 1 | SIGHUP |
| audit_set_parameter | 0 | 1 | SIGHUP |
| audit_xid_info | 0 | 0 | SIGHUP |
| audit_directory | /database/panweidb/pg_audit | /var/log/mogdb/用户名/pg_audit | POSTMASTER |
| audit_resource_policy | off | on | SIGHUP |
| audit_space_limit | 5GB | 1GB | SIGHUP |
| audit_file_remain_time | 7 | 90 | SIGHUP |
参数说明:
- audit_enabled: 审计进程的开启和关闭
- audit_login_logout: “决定是否审计panweidb用户的登录(包括登录成功和登录失败)、注销
0:关闭用户登录、注销审计功能。
1:只审计用户登录成功。
2:只审计用户登录失败。
3:只审计用户登录成功和失败。
4:只审计用户注销。
5:只审计用户注销和登录成功。
6:只审计用户注销和登录失败。
7:审计用户登录成功、失败和注销。” - audit_grant_revoke: 是否审计openGauss用户权限授予和回收的操作
- audit_database_process: 是否对openGauss的启动、停止、切换和恢复进行审计
- audit_user_locked: 是否审计openGauss用户的锁定和解锁
- audit_user_violation: 是否审计用户的越权访问操作
- audit_system_object: 数据库对象的CREATE,ALTER,DROP操作审计
- audit_dml_state_select: SELECT操作审计
- audit_dml_state: 表的INSERT、UPDATE和DELETE操作审计
- audit_function_exec: 存储过程和自定义函数的执行审计
- audit_copy_exec: 是否审计COPY操作
- audit_set_parameter: 是否审计SET操作
- audit_xid_info: 是否记录审计日志记录事务ID功能
- audit_directory: 审计文件的存储目录
- audit_resource_policy: “审计日志的保存策略。
on表示采用空间优先策略,最多存储audit_space_limit大小的日志,默认on。
off表示采用时间优先策略,最少存储audit_file_remain_time长度时间的日志” - audit_space_limit: 审计文件占用的磁盘空间总量
- audit_file_remain_time: 审计日志文件的最小保存时间,单位天
设置参数:
gs_guc set -I all -N all -c "audit_directory = '/database/panweidb/pg_audit'"
gs_guc reload -I all -N all -c "audit_enabled = 'on'"
gs_guc reload -I all -N all -c "audit_login_logout = '7'"
gs_guc reload -I all -N all -c "audit_grant_revoke = '1'"
gs_guc reload -I all -N all -c "audit_database_process = '0'"
gs_guc reload -I all -N all -c "audit_user_locked = '0'"
gs_guc reload -I all -N all -c "audit_user_violation = '0'"
gs_guc reload -I all -N all -c "audit_system_object = '0'"
gs_guc reload -I all -N all -c "audit_dml_state_select = '0'"
gs_guc reload -I all -N all -c "audit_dml_state = '0'"
gs_guc reload -I all -N all -c "audit_function_exec = '0'"
gs_guc reload -I all -N all -c "audit_copy_exec = '0'"
gs_guc reload -I all -N all -c "audit_set_parameter = '0'"
gs_guc reload -I all -N all -c "audit_xid_info = '0'"
gs_guc reload -I all -N all -c "audit_resource_policy = 'off'"
gs_guc reload -I all -N all -c "audit_space_limit = '5GB'"
gs_guc reload -I all -N all -c "audit_file_remain_time = '7'"
2.11 其他
涵盖了其他未归类的核心参数,包括监控快照、存储引擎、线程池、事务管理等,用于补充优化数据库的综合性能和功能,这些参数也非常重要。
| 参数 | 推荐值 | 默认值 | 参数类型 |
|---|---|---|---|
| enable_wdr_snapshot | on | off | SIGHUP |
| sync_config_strategy | none_node | all_node | POSTMASTER |
| enable_save_datachanged_timestamp | off | on | USER |
| track_sql_count | off | on | SUPERUSER |
| enable_instr_rt_percentile | off | on | SIGHUP |
| enable_instance_metric_persistent | off | on | SIGHUP |
| enable_logical_io_statistics | off | on | SIGHUP |
| enable_user_metric_persistent | off | on | SIGHUP |
| enable_mergejoin | on | off | USER |
| enable_nestloop | on | off | USER |
| enable_pbe_optimization | off | on | SUPERUSER |
| max_files_per_process | 100000 | 1000 | POSTMASTER |
| lc_messages | en_US.UTF-8 | C | SUSET |
| lc_monetary | en_US.UTF-8 | C | USERSET |
| lc_numeric | en_US.UTF-8 | C | USERSET |
| lc_time | en_US.UTF-8 | C | USERSET |
| enable_asp | on | on | SIGNUP |
| behavior_compat_options | display_leading_zero | display_leading_zero | USERSET |
| enable_thread_pool | off | off | POSTMASTER |
| synchronous_commit | on | on | USERSET |
| recovery_max_workers | 4 | 1 | POSTMASTER |
| enable_alarm | off | on | POSTMASTER |
| enable_codegen | off | on | USERSET |
| update_lockwait_timeout | 1min | 2min | SUSET |
| lockwait_timeout | 1min | 20min | SUSET |
| max_prepared_transactions | 3000 | 10 | POSTMASTER |
| pagewriter_sleep | 200 | 2000ms | SIGHUP |
| max_size_for_xlog_prune | 104857600 | 2147483647KB | SIGHUP |
| gs_clean_timeout | 0 | 1min | SIGHUP |
| enable_ustore | off | on | POSTMASTER |
| enable_double_write | on | on | POSTMASTER |
| enable_incremental_checkpoint | on | on | POSTMASTER |
| random_page_cost | 1.5 | 4 | USERSET |
参数
- enable_wdr_snapshot: 数据库监控快照功能
- sync_config_strategy: 主机、备机和级联备之间配置文件的同步策略
- enable_save_datachanged_timestamp: 确定是否收集insert/update/delete, exchange/truncate/drop partition操作对表数据改动的时间
- track_sql_count: 控制对每个会话中当前正在执行的SELECT、INSERT、UPDATE、DELETE、MERGE INTO语句进行计数的统计数据
- enable_instr_rt_percentile: 开启计算系统中80%和95%的SQL响应时间的功能
- enable_instance_metric_persistent: 开启实例资源监控转存功能,开启时,对实例的监控数据会保存到GS_WLM_INSTANCE_HISTORY系统表中。
- enable_logical_io_statistics: 开启资源监控逻辑IO统计功能,开启时,对于PG_TOTAL_USER_RESOURCE_INFO视图中的read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed字段,会统计对应用户的逻辑读写字节数、次数以及速率。
- enable_user_metric_persistent: 开启用户历史资源监控转存功能,开启时,对于PG_TOTAL_USER_RESOURCE_INFO视图中数据,会定期采样保存到GS_WLM_EC_OPERATOR_INFO系统表中。
- enable_mergejoin: 优化器对融合连接规划类型的使用
- enable_nestloop: 优化器对内表全表扫描嵌套循环连接规划类型的使用完全消除嵌套循环连接是不可能的,但是关闭这个变量就会让优化器在存在其他方法的时候优先选择其他方法。
- enable_pbe_optimization: 对以PBE(Parse Bind Execute)形式执行的语句进行查询计划的优化
- max_files_per_process: 设置每个服务器进程允许同时打开的最大文件数目
- lc_messages: 信息显示的语言
- lc_monetary: 货币值的显示格式
- lc_numeric: 数值的显示格式
- lc_time: 时间和区域的显示格式
- enable_asp: 是否开启活跃会话信息active session profile。
- behavior_compat_options: 用于解决输出decimal数字时候缺头部0的问题,比方0.2默认只输出.2,参数作用于gsql客户端和wal2json插件
- enable_thread_pool: 控制是否使用线程池功能(3.0开启,做了异步提交增强)
- synchronous_commit: 当前事务的同步方式
- recovery_max_workers: 最大并行回放线程个数
- enable_alarm: 告警检测线程,检测数据库中可能的错误场景
- enable_codegen: 开启代码生成优化,目前代码生成使用的是LLVM优化
- update_lockwait_timeout: 并发更新参数开启情况下,该参数控制并发更新同一行时单个锁的最长等待时间
- lockwait_timeout: 单个锁的最长等待时间
- max_prepared_transactions: 设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使openGauss比系统默认设置需要更多的System V共享内存
- pagewriter_sleep: 脏页数量不足pagewriter_threshold时,后台刷页线程将sleep设置的时间继续刷页
- max_size_for_xlog_prune: 在enable_xlog_prune打开时生效,如果有备机断连且xlog日志大小大于此阈值,则回收日志。所有备机断联且无逻辑复制槽时,不回收日志
- gs_clean_timeout: 控制清理临时表时间。数据库连接异常终止时,通常会有临时表残留,此时需要对数据库中的临时表进行清理。
- enable_ustore: ustore存储引擎特性
- enable_double_write: “双写开关。当增量检查点开关打开时,同时enable_double_write打开,则
使用enable_double_write双写特性保护,不再使用full_page_writes防止半页写问题” - enable_incremental_checkpoint: 增量检查点开关打开之后,设置自动WAL检查点之间的最长时间
- random_page_cost: 设置优化器计算一次非顺序抓取磁盘页面的开销。
设置:
gs_guc set -I all -N all -c "enable_ustore = 'off'";
gs_guc set -I all -N all -c "enable_double_write = 'on'";
gs_guc set -I all -N all -c "enable_incremental_checkpoint = 'on'";
gs_guc set -I all -N all -c "sync_config_strategy = 'none_node'";
gs_guc set -I all -N all -c "max_files_per_process = '100000'";
gs_guc set -I all -N all -c "recovery_max_workers = '4'";
gs_guc set -I all -N all -c "enable_alarm = 'off'";
gs_guc set -I all -N all -c "enable_thread_pool = 'off'";
gs_guc set -I all -N all -c "max_prepared_transactions = '3000'";
gs_guc reload -I all -N all -c "enable_wdr_snapshot = 'on'";
gs_guc reload -I all -N all -c "enable_save_datachanged_timestamp = 'off'";
gs_guc reload -I all -N all -c "track_sql_count = 'off'";
gs_guc reload -I all -N all -c "enable_instr_rt_percentile = 'off'";
gs_guc reload -I all -N all -c "enable_instance_metric_persistent = 'off'";
gs_guc reload -I all -N all -c "enable_logical_io_statistics = 'off'";
gs_guc reload -I all -N all -c "enable_user_metric_persistent = 'off'";
gs_guc reload -I all -N all -c "enable_mergejoin = 'on'";
gs_guc reload -I all -N all -c "enable_nestloop = 'on'";
gs_guc reload -I all -N all -c "enable_pbe_optimization = 'off'";
gs_guc reload -I all -N all -c "lc_messages = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_monetary = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_numeric = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "lc_time = 'en_US.UTF-8'";
gs_guc reload -I all -N all -c "enable_asp = 'on'";
gs_guc reload -I all -N all -c "behavior_compat_options = 'display_leading_zero'";
gs_guc reload -I all -N all -c "synchronous_commit = 'on'";
gs_guc reload -I all -N all -c "enable_codegen = 'off'";
gs_guc reload -I all -N all -c "update_lockwait_timeout = '1min'";
gs_guc reload -I all -N all -c "lockwait_timeout = '1min'";
gs_guc reload -I all -N all -c "pagewriter_sleep = '200'";
gs_guc reload -I all -N all -c "max_size_for_xlog_prune = '104857600'";
gs_guc reload -I all -N all -c "gs_clean_timeout = '0'";
gs_guc reload -I all -N all -c " random_page_cost = '1.5'";
3 总结
通过以上白名单和参数配置方案,可以在生产环境中显著提升磐维数据库的安全性、性能及可维护性,适用于生产环境部署参考。




