Gilles Darold:PostgreSQL中的PGTT扩展实现全局临时表

Gilles Darold:PostgreSQL中的PGTT扩展实现全局临时表

💡 原文英文,约1200词,阅读约需5分钟。
📝

内容提要

PostgreSQL没有内置支持全局临时表的功能,但有几个扩展可提供此功能。其中一个扩展是PGTT,允许用户创建类似于Oracle的全局临时表。另一个选择是使用基于SQL的扩展,如pg_global_temp_tables和Global-Temporary-Tables-For-PG。这些扩展提供了在事务之外创建临时表和支持临时表上的索引等功能。然而,它们可能无法解决目录表膨胀的问题。pgtt扩展稳定且功能齐全,但尚未由PostgreSQL全球开发组分发为二进制包。总体而言,在PostgreSQL中实现全局临时表的最佳选择是使用这些扩展或重写应用程序以使用本地临时表。

🎯

关键要点

  • PostgreSQL没有内置全局临时表的支持,但有多个扩展可提供此功能。
  • PGTT扩展允许用户创建类似于Oracle的全局临时表。
  • 全局临时表具有持久的DDL结构,但数据不持久,仅对插入数据的会话可见。
  • 使用全局临时表可以避免目录表膨胀的问题。
  • 历史上曾讨论过在PostgreSQL核心中实现全局临时表的可能性,但未能成功。
  • pg_global_temp_tables扩展尝试实现Oracle风格的全局临时表,但自2018年以来未再维护。
  • Global-Temporary-Tables-For-PG扩展在pg_global_temp_tables的基础上增加了一些缺失的功能。
  • pgtt扩展提供Oracle风格的全局临时表功能,支持在PostgreSQL中使用。
  • pgtt扩展在4.0版本后可以通过session_preload_libraries自动加载。
  • 实现全局临时表功能的最佳选择是使用pgtt扩展或重写应用程序以使用本地临时表。
➡️

继续阅读