PostgreSQL 扩展:pg_prewarm

​pg_prewarm 是一个 PostgreSQL 扩展,它允许开发人员将关系数据加载到操作系统缓冲区缓存或 PostgreSQL 共享缓冲区中。这对于减少数据库重启后预热缓存的时间特别有用,因此得名“pg_prewarm”。

安装 pg_prewarm 扩展

​要安装 pg_prewarm 扩展,您需要在系统上安装 PostgreSQL。安装 PostgreSQL 后,请按照以下步骤操作

1. 打开 PostgreSQL 命令行界面。

2. 连接到您要安装扩展的数据库。

3. 运行以下命令

CREATE EXTENSION pg_prewarm;
​

此命令将在您的当前数据库中安装 pg_prewarm 扩展。

​使用 pg_prewarm 扩展

​安装了 pg_prewarm 扩展后,您可以使用它来预热数据库中的表,这些表您知道很快就会被读取。以下是方法

1. 连接到您的数据库。

2. 运行以下命令

SELECT pg_prewarm('your_table_name');

将“your_table_name”替换为您要预热的表的名称。此命令将从指定的表加载数据到缓存中。

pg_prewarm 扩展的时间序列用例

pg_prewarm 扩展在时间序列数据库中很有用,在时间序列数据库中,数据会按时间顺序不断添加。通过在重启后将超表的最新部分预加载到缓存中,您可以显着减少在这些表上执行查询的时间。

将 pg_prewarm 与 Timescale 和时间序列数据一起使用

​如果您使用的是 Timescale(一个基于 PostgreSQL 的时间序列云数据库),您可以使用 pg_prewarm 扩展来提高数据库的性能。以下是方法

1. 在您的 Timescale 数据库中安装 pg_prewarm 扩展。在 Timescale 上,您可以通过转到 操作 > 扩展 从您的服务概述中找到可用的扩展,该概述还会提供安装说明。

2. 使用 pg_prewarm 函数来预热您的超表。

SELECT pg_prewarm(format('%s.%s', chunk_schema, chunk_name)) FROM   (SELECT * FROM timescaledb_information.chunks     WHERE hypertable_name = 'your_hypertable_name' AND                   range_end > now() - interval '1 day   ) a;

​将“your_hypertable_name”替换为您的超表的名称,将“1 day”替换为与块匹配的回溯时间段。在这个例子中,您将预热覆盖最后一天的任何块。

此命令将从指定的超表块加载数据到缓存中,从而提高您在超表最近一天的数据上查询的性能。

了解更多

想了解更多关于扩展 PostgreSQL 以实现扩展和时间序列场景的信息吗? 查看 Timescale 文档中的教程 以开始使用。