PostgreSQL - 如何更改 tmp 目录?

Aar*_*der 4 postgresql

我使用 OpenGeo Suite 在 Windows 8 上运行 PostgreSQL。我在大型连接上的磁盘空间不足。如何更改存储“哈希连接临时文件”的临时目录?

我正在查看 PostgreSQL 配置文件,但没有看到 tmp 文件目录。

注意:我正在使用设置为主键的可变文本字段合并两个包含 1000 万行的表。

这是我的查询:

UPDATE blocks 
SET "PctBlack1" = race_blocks."PctBlack1"
FROM race_blocks
WHERE race_blocks.esriid = blocks.geoid10
Run Code Online (Sandbox Code Playgroud)

Mat*_*sOl 5

首先,确保您在(两个表的)这些列上都有一个索引。这将使 PostgreSQL 使用更少的临时文件。另外,将 GUC 设置work_mem得尽可能高,以使 PostgreSQL 使用更多内存进行此类操作。

现在,如果仍然需要更改临时路径,您首先需要创建一个表空间(如果您还没有这样做):

CREATE TABLESPACE temp_disk LOCATION 'F:\pgtemp';
Run Code Online (Sandbox Code Playgroud)

然后,您必须设置 GUC temp_tablespaces。您可以postgresql.conf在当前会话中或在当前会话中(在查询之前)为每个数据库、每个用户设置它:

SET temp_tablespaces TO 'temp_disk';

UPDATE blocks 
SET "PctBlack1" = race_blocks."PctBlack1"
FROM race_blocks
WHERE race_blocks.esriid = blocks.geoid10
Run Code Online (Sandbox Code Playgroud)

还有一件事,用户必须CREATE有权使用它:

GRANT CREATE ON TABLESPACE temp_disk TO app_user;
Run Code Online (Sandbox Code Playgroud)