第?19?章?ux_prewarm

ux_prewarm模块提供一种方便的方法把关系数据载入到操作系统缓冲区或者UXDB缓冲区。

使用ux_prewarm模块前,首先需要执行CREATE EXTENSION命令:

CREATE EXTENSION ux_prewarm;
ux_prewarm(regclass, mode text default 'buffer', fork text default 'main',
           first_block int8 default null,
           last_block int8 default null) returns int8

第一个参数是要预热的关系。第二个参数是要使用的预热方法,下文将会进一步讨论。第三个参数是要被预热的关系分叉,通常是main。第四个参数是要预热的第一个块号(NULL也被接受,它等同于零)。第五个参数是要预热的最后一个块号(NULL表示一直预热到关系的最后一个块)。返回值是被预热的块数。

有三种可用的预热方法:

  1. prefetch会向操作系统发出异步预取请求(如果支持异步预取),不支持异步预取则抛出一个错误。

  2. read会读取要求范围的块。与prefetch不同,它是同步的并且在所有平台上都被支持,但是可能较慢。

  3. buffer会把要求范围的块读入数据库的缓冲区。

注意

使用劝拿庞蜗菲教ㄗ⒉嵬锯一种方法尝试预热比能缓存的数量更多的块—将很可能导致高编号块被读入时把低编号的块从缓冲区中挤出的情况。被预热的数据也不享受对缓冲区替换的特别保护,因此其他系统活动可能会在刚刚被预热的块被读入后很快就将它们逐出。反过来,预热也可能把其他数据逐出缓存。由于这些原因,预热通常在启动时最有用,因为这时缓冲大部分都为空。

XML 地图 | Sitemap 地图