
# RDS for PostgreSQL参数调优建议
数据库参数是数据库系统运行的关键配置信息，设置不合适的参数值可能会影响业务。本文列举了一些重要参数说明，更多参数详细说明，请参见[PostgreSQL官网](https://www.postgresql.org/docs/current/static/runtime-config.html)。
通过控制台界面修改RDS for PostgreSQL参数值，请参见[修改RDS for PostgreSQL实例参数](https://support.huaweicloud.com/usermanual-rds-pg/rds_pg_configuration.html)。
一部分参数修改后需要重启实例才能生效，具体是否需要重启请以界面提示为准。
#### search_path
- 参数说明：为不是模式限定的名称设置模式搜索顺序。

- 修改建议：必须配置为以逗号分隔的模式名序列，并需确保该模式名存在，否则会影响数据库的使用。
 
#### log_duration
- 参数说明：记录每一条完成了的 SQL 语句过程。
- 默认值：off
- 修改建议：可能会在日志中记录带有敏感信息的SQL语句，建议关闭该配置。
 
#### log_min_duration_statement
- 参数说明：用于设置最小执行时间，执行时间大于等于这个值的语句都将被记录，单位为毫秒。
- 默认值：1000
- 修改建议：值为0，表示记录所有语句，值为-1，表示不记录语句。具体请参见[查看或下载慢日志](https://support.huaweicloud.com/usermanual-rds-pg/slow_query_log-pg.html)。
 
#### temp_file_limit
- 参数说明：在一个会话中触发临时文件写盘操作时，所有临时文件的总空间大小，单位为KB。
- 修改建议：取值范围为-1\~2,147,483,647，值为-1，表示临时文件空间大小没有限制。
  - 通常避免设置值为-1，防止临时文件占用过多的磁盘空间，导致用户业务异常。
  
  - 如果将参数值修改为较大值供临时使用，使用完成后没有将参数修改为原来的值，可能会导致误用临时空间导致占满磁盘停止用户业务，且用户实例变为异常。
   
 
#### max_pred_locks_per_transaction
- 参数说明：设置每一个事务的断言锁的最大个数。
- 修改建议：该参数配置与max_connections和max_prepared_transactions参数有关，请结合实际业务需要进行配置，如果配置的参数值过大，可能会导致实例异常。
 
#### max_locks_per_transaction
- 参数说明：设置每一个事务锁的最大个数。
- 修改建议：该参数配置与max_connections和max_prepared_transactions参数有关，调整该参数值会直接影响共享内存占有量，设置过大可能会因内存不足导致实例异常。内存消耗估算公式为：0.4 x max_locks_per_transaction x (max_connections + max_prepared_transactions)，单位是KB。
 
#### log_statement
- 参数说明：设置记录语句的类型。
- 修改建议：配置为"ddl"、"mod"或"all"，会记录创建及删除数据库用户的操作，包含数据库用户的密码等敏感信息，同时也会影响数据库的性能，请确认后进行配置。
 
#### shared_buffers
- 参数说明：设置服务器使用的共享内存缓冲区的块数量，每一块大小为8 KB。
- 修改建议：参数配置的合理范围是系统内存的25%\~40%，参数值过大会影响数据库的性能，请确认后进行配置。
 
#### max_worker_processes
- 参数说明：最大并发工作进程数。
- 修改建议：max_worker_processes参数配置与max_parallel_workers和max_parallel_workers_per_gather参数有关，建议根据业务需求进行配置，配置过大会影响数据库性能，请确认后进行配置。
 
