PostgreSQL学习篇15.1 数据库配置优化

来源:互联网 发布:三维立体图设计软件 编辑:程序博客网 时间:2024/05/22 14:36
内存配置优化:PG中与内存有关的配置参数:shared_buffers:共享缓存区的大小,相当于Oracle中的SGA,推荐为内存的1/4,不超过总内存的1/2。从PG9.3开始,共享内存已从System V方式改为了Posix方式和mmap方式,因此在pg9.3以后不需要配置Linux的shmmax和shmall参数,之前的版本还需要配置。shmmax:表示单个共享内存段可以创建的最大值,shmall:表示整个系统内可以为共享内存配置的页面数。work_mem:为每个进程单独分配的内存,主要用于排序、hash等操作maintence_work_mem:也是为每个进程单独分配的内存,但主要用于维护操作,如vacuumPG9.4以后开始支持大页,打开大页的方法:huge_pages=try设置为try后,pg会尝试使用大页,如果操作系统没有配置大页或配置的大页小于PG需要的大页内存,那么PG在分配大页失败后,会使用普通内存。如果把huge_pages设置为on,那么分配大页失败后,pg启动也会失败。vacuum:定期做vacuum原因:1. 标记多版本中不再需要的旧版本行所占用的空间为可用,以重复使用这部分磁盘空间2. 更新统计数据,保证执行计划的正确性3. 事务ID为32位递增的一个整数,当增加到最大值后,会从起始值开始,这就要保证旧的已提交事务的数据仍然可见,需要把这些行上的事务ID更新为一个永远可见的事务ID(frozen XID)目前有一下两种vacuum:1. 标准的vacuum2. vacuum fullvacuum可以与select语句或DML语句并行执行,但是若在清理该表,不能使用alter table此类DDL语句修改表定义。vacuum full需要在表上的一个排斥锁才能工作,不能与其他使用该表的语句并行执行,所以一般使用标准vacuum即可。但vacuum full能释放更多磁盘空间。#autovacuum = on                        # Enable autovacuum subprocess?  'on'预写式日志写优化:以下参数控制检查点发生的频率:1. checkpoint_segments2. checkpoint_timeout每写完checkpoint_segments个WAL日志文件或每过checkpoint_timeout秒就创建一个检查点,不管哪个条件满足。也可用命令checkpoint强制创建一个检查点。wal_buffers:用于指定WAL缓存的大小。wal_level:决定多少信息写入WAL中。

0 0
原创粉丝点击