Halo数据库的参数主要通过参数文件(默认为$PGDATA/postgresql.conf)
进行配置。
vi $PGDATA/pg_hba.conf
添加如下项
host all all 0.0.0.0/0 md5
注意:如要设置某个网段能访问就用192.168.231.0/0
1 参数设置说明
所有参数名都是大小写不敏感的。每个参数可以接受以下五种类型之一的值:
l 布尔型。值可以被写成on/off、true/false、yes/no、1/0。
l 字符串。通常值被包括在单引号内。,值内部的任何单引号都需要被转义。
l 数值。可以接受十六进制(以0x开头)和十进制数值。不能使用千位分隔符。
l 带单位的数值。可用的内存单位是B(字节)、kB(千字节)、MB(兆字节)、GB(吉字节)。注意内存单位的乘数是1024。可用的时间单位是us(微妙)、ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。
l 枚举型。枚举类型的参数以与字符串参数相同的方式指定,但被限制到一组有限的值。 这样一个参数可用的值可以在pg_settings.enumvals 中找到。
根据参数性质和功能的不同,参数设置的影响时间也有差异。一部分参数是需要重启数据库实例后才能生效(即启动时生效);一部分参数可以通过SIGHUP信号,例如:
pg_ctl reload
即可生效。还有一小部分参数是只读的,无法更改。
2 网络参数
listen_addresses(字符串)
设置在哪些地址上进行监听。默认值localhost,即只允许本地连接。该参数
只能在实例启动时设置。
port(数值)
监听端口。默认值1921。该参数只能在实例启动时设置。
max_connections(数值)
最大并发连接数。默认值100。该参数只能在实例启动时设置。
superuser_reserved_connections(数值)
保留的连接数(超级用户,通常为halo)。默认值3。该参数只能在实例启
动时设置。
unix_socket_directories(字符串)
进程目录。默认值/var/run/halo。该参数只能在实例启动时设置。
3 安全认证参数
authentication_timeout(数值)
认证超时时间。默认值1m(1分钟)。该参数可在运行期间设置。
failed_login_attempts(数值)
用户登录失败的最大次数。超过该次数后,用户将锁定。超级用户halo不
受该参数影响。默认值0(即禁用该功能)。该参数可在运行期间设置。
shared_preload_libraries = ‘passwordcheck’(数值)
密码复杂度策略,加载passwordcheck。该参数只能在实例启动时设置。
passwordcheck.enable (数值)
打开密码复杂度开关,该参数可在运行期间设置。
passwordcheck.password_condition_digit(数值)
口令至少包含几个字母,取值范围为[2,61],缺省为2,该参数可在运行期间设置。
4 内存参数
shared_buffers(数值)
共享内存池(SBP)的大小。该参数直接影响数据库的性能。默认值128MB。通常默认值是不足够的,需要根据自己实际的服务器配置进行测算决定。建议进行性能及压力测试后来设置该值。该参数只能在实例启动时设置。
huge_pages(枚举型)
共享内存池是否使用大页。有效值是try、on和off。默认值try。该参数只能在实例启动时设置。
temp_buffers(数值)
每个会话进程(Backend Process)设置临时缓冲区的最大内存。该内存区域用来存储临时表。默认值8MB。该参数可在运行期间设置。
work_mem(数值)
每个会话进程(Backend Process)进行排序、连接等操作时的最大内存。默认值4MB。该参数可在运行期间设置。
maintenance_work_mem(数值)
维护性操作,如VACUUM、CREATE INDEX等使用的最大内存。默认值64MB。该参数可在运行期间设置。
autovacuum_work_mem(数值)
每个清理工作进程(vacuum worker)的最大可使用内存。默认值-1,表示使用maintenance_work_mem的设置值。该参数可在运行期间设置。
wal_buffers(数值)
WAL缓冲区大小。默认值-1,表示约%3*shared_buffers。
5 I/O参数
temp_file_limit(数值)
一个进程能用于临时文件(例如排序、哈希计算时的临时文件)的最大磁盘使用量。超过这个限制的事务将被取消。默认值-1,表示不限制磁盘使用。该参数只能在实例启动时设置。
bgwriter_delay(数值)
数据写进程(Background Writer)写数据活动的间隔。默认值200ms(200毫秒)。该参数只能在实例启动时设置。
bgwriter_lru_maxpages(数值)
数据写进程每次可写入的页面数。默认值100。该参数只能在实例启动时设置。
bgwriter_lru_multiplier(数值)
用于估计数据写进程下一次需要写入的页面数。默认值2.0。该参数可在运行期间设置。
bgwriter_flush_after(数值)
强制进行脏数据写入磁盘的阈值。默认值512kB。该参数只能在实例启动时设置。
effective_io_concurrency(数值)
I/O并发操作的最大值。允许的范围是1-1000。默认值1。该参数只能在实例启动时设置。
maintenance_io_concurrency(数值)
与effective_io_concurrency类似,用于会话进程。默认值10。该参数只能在实例启动时设置。
6 进程参数
max_worker_processes(数值)
后台进程的最大数量。默认值8。该参数只能在实例启动时设置。
max_parallel_workers(数值)
max_parallel_workers_per_gather(数值)
max_parallel_maintenance_workers(数值)
并发查询相关参数。
old_snapshot_threshold(数值)
最旧快照的时间阈值。合理使用该参数可以规避使用快照时出现“snapshot too old” 错误。默认值-1,表示禁用该功能。
max_spins_per_delay(数值)
自旋锁每次最大的旋转次数。默认值1000。可取值范围为10-1000。在某些情况下,适当降低该值可能带来更好的性能表现。请记住,在更改此参数前请进行详尽的测试。该参数只能在实例启动时设置。
spins_num_delays(数值)
自旋锁最大的旋转机会。默认值1000。可取值范围为10-1000。此参数通常配合max_spins_per_delay参数一起使用。在某些情况下,适当降低该值可能带来更好的性能表现。请记住,在更改此参数前请进行详尽的测试。该参数只能在实例启动时设置。
7 WAL参数
wal_level(枚举型)
WAL(Write-Ahead Log,预写式日志)的级别。默认replica。其它可选的值包括minimal、logical。
fsync(布尔型)
是否尝试确保数据已写入磁盘。默认值on。
full_page_writes(布尔型)
是否将整页写入到WAL日志中。默认为on。
wal_compression(布尔型)
是否对WAL日志进行压缩。默认值off。
wal_recycle(布尔型)
是否重用WAL日志文件。默认值on。
min_wal_size(数值)
max_wal_size(数值)
WAL日志空间消耗的上下限。min_wal_size默认值80MB。max_wal_size默认值1GB。
archive_mode(枚举型)
是否开启日志归档。默认值off。
vi $PGDATA/postgresql.conf
修改如下项
archive_mode = on
archive_command = 'test ! -f /data/halo/pg_archive/%f && cp %p /data/halo/pg_archive/%f'
archive_command(字符串)
归档使用的命令。一个简单且较常用的命令类似'test ! -f <归档路径>/%f && cp %p <归档路径>/%f'。
8 查询优化参数
seq_page_cost(数值)
顺序扫描时的估计成本。默认值1.0。
random_page_cost(数值)
随机扫描时的估计成本。默认值4.0。SSD类型的磁盘通常拥有较好的随机访问性能,该值需根据实际配置情况而定。
effective_cache_size(数值)
该参数只是用于优化器成本估计目的。该值越大,优化器越倾向于使用索引。默认值4GB。
9 自动清理参数
autovacuum(布尔型)
是否使用自动清理。默认值on。
autovacuum_max_workers(数值)
清理工作进程的最大数量。默认值3。
autovacuum_vacuum_threshold(数值)
autovacuum_vacuum_scale_factor(数值)
更新操作(UPDATE)、删除操作(DELETE)触发清理工作的阈值。该阈值由公式autovacuum_vacuum_scale_factor *表总行数+ autovacuum_vacuum_threshold来决定。其中,autovacuum_vacuum_scale_factor默认值0.2(20%),autovacuum_vacuum_threshold默认值50(行)。
autovacuum_vacuum_insert_threshold(数值)
autovacuum_vacuum_insert_scale_factor(数值)
插入操作(INSERT)触发清理工作的阈值。该阈值由公式autovacuum_vacuum_insert_scale_factor * 表总行数+ autovacuum_vacuum_insert_threshold来决定。autovacuum_vacuum_insert_scale_factor默认值0.2(20%),autovacuum_vacuum_insert_threshold默认值1000(行)。
autovacuum_analyze_threshold(数值)
autovacuum_analyze_scale_factor(数值)
插入操作、更新操作、删除操作触发统计信息收集工作(ANALYZE)的阈值。该阈值由公式autovacuum_analyze_scale_factor * 表总行数 + autovacuum_analyze_threshold来决定。autovacuum_analyze_scale_factor默认值0.1(10%),autovacuum_analyze_threshold默认值50(行)。
autovacuum_freeze_max_age(数值)
一个表上允许的事务最大年龄。该值可由pg_class.relfrozenxid获得。超过该设置值,该表上的事务将被强制冻结。默认值200000000。
10 其它参数
database_compat_mode(枚举型)
数据库运行模式。默认值postgresql。其它可取值包括oracle、sybase、sqlserver、db2。
standard_parserengine_auxiliary(布尔型)
是否需要标准编译引擎协同。默认值on。
heap_default_fillfactor(数值)
表上FILLFACTOR的默认值。默认值100。
enable_col_output_upcase(布尔型)
列名输出是否采用大写。默认值off。
use_datetime_as_date(布尔型)
是否使用DATETIME类型来替换DATE类型。该参数只在oracle模式下生效。默认值off。
timezone(字符串)
时区设置。默认值GMT。
search_path(字符串)
对象搜索时使用的模式(SCHEMA)顺序。默认情况下,当运行模式为postgresql时,pg_catalog为第一个搜索模式。当运行模式为oracle时,oracle为第一个搜索模式。以此类推。




