# F.28.pg_预热
这个pg_预热
模块提供了一种将关系数据加载到操作系统缓冲区缓存或PostgreSQL缓冲区缓存的方便方法。可以使用pg_预热
功能,或可通过以下方式自动执行:pg_预热
在里面共享_预加载_图书馆。在后一种情况下,系统将运行后台工作程序,定期将共享缓冲区的内容记录在名为自动重写。阻碍
将使用两个后台工作人员,在重启后重新加载相同的块。
# F.28.1.功能
pg_prewarm(regclass, mode text default 'buffer', fork text default 'main',
first_block int8 default null,
last_block int8 default null) RETURNS int8
第一个论点是要预热的关系。第二个论点是将要使用的预热方法,如下所述;第三个通常是要预热的关系叉主要的
.第四个参数是要预热的第一个区块编号(无效的
被认为是零的同义词)。第五个参数是要预热的最后一个块号(无效的
表示通过关系中的最后一个块进行预热)。返回值是预热的块数。
有三种可用的预热方法。预取
如果支持,则向操作系统发出异步预取请求,否则会抛出错误。阅读
读取请求的块范围;不像预取
,这是同步的,在所有平台和版本上都受支持,但速度可能较慢。缓冲器
将请求的块范围读入数据库缓冲区缓存。
请注意,使用这些方法中的任何一种,都会在使用时尝试预热超过可缓存的块预取
或阅读
,或在使用缓冲器
-当读入编号较高的块时,可能会导致编号较低的块被逐出。预加热的数据也不受缓存逐出的特殊保护,因此其他系统活动可能会在读取新预加热的块后不久逐出它们;相反,预热也可能会从缓存中逐出其他数据。由于这些原因,当缓存基本上为空时,预热通常在启动时最有用。
autoprewarm_start_worker() RETURNS void
启动主自动重写工作程序。这通常会自动发生,但如果在服务器启动时未配置自动预热,并且您希望在以后启动工作程序,则此操作非常有用。
autoprewarm_dump_now() RETURNS int8
使现代化自动重写。阻碍
立即如果autoprewarm worker未运行,但您希望在下次重新启动后运行它,这可能很有用。返回值是写入的记录数自动重写。阻碍
.
# F.28.2.配置参数
控制服务器是否应运行自动重写工作程序。默认情况下,此选项处于启用状态。此参数只能在服务器启动时设置。
这是更新到的时间间隔自动重写。阻碍
.默认值为300秒。如果设置为0,文件将不会定期转储,但只有在服务器关闭时才会转储。
# F.28.3.作者
罗伯特·哈斯<[rhaas@postgresql.org](邮寄至:rhaas@postgresql.org)>