Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PostgreSQL学习篇15.1 数据库配置优化大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
内存配置优化:
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:也是为每个进程单独分配的内存,但主要用于维护操作,如VACUUM

PG9.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 full

VACUUM可以与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中。

大佬总结

以上是大佬教程为你收集整理的PostgreSQL学习篇15.1 数据库配置优化全部内容,希望文章能够帮你解决PostgreSQL学习篇15.1 数据库配置优化所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:s