内存配置优化: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. 标准的vacuum 2. vacuum fullvacuum可以与select语句或DML语句并行执行,但是若在清理该表,不能使用alter table此类DDL语句修改表定义。vacuum full需要在表上的一个排斥锁才能工作,不能与其他使用该表的语句并行执行,所以一般使用标准vacuum即可。但vacuum full能释放更多磁盘空间。#autovacuum = on # Enable autovacuum subPRocess? 'on'预写式日志写优化:一下参数控制检查点发生的频率: 1. checkpoint_segments 2. checkpoint_timeout每写完checkpoint_segments个WAL日志文件或每过checkpoint_timeout秒就创建一个检查点,不管哪个条件满足。也可用命令checkpoint强制创建一个检查点。wal_buffers:用于指定WAL缓存的大小。wal_level:决定多少信息写入WAL中。
新闻热点
疑难解答