WhatsNew83

来自 PostgreSQL 维基
跳转到导航跳转到搜索

此页面旨在为编写文章、演示文稿、手册或其他倡导相关材料的人员提供资源,以概述 PostgreSQL 8.3 中的一些新功能。条目的格式为

  • 功能
    • 它做什么以及/或者它改变了什么。
    • 谁应该关心,谁将从中受益最多。

此外,这些条目已分为 4 个部分

  • 性能,用于与性能相关的功能。
  • 管理,用于最有可能帮助 DBA 的功能
  • 开发者,用于可能帮助为 PostgreSQL 开发应用程序的人员的功能。
  • 第三方,用于未包含在核心服务器中的功能,但它们在 8.3 周期中是新的。

有关更多信息,请参阅 8.3 版本说明


性能

  • HOT
    • HOT 代表堆仅元组,并试图解决与频繁更新的元组相关的某些性能问题。HOT 优化了一种特殊但重要的情况,即 UPDATE 不更改任何索引键列或索引表达式和谓词中引用的列。HOT 有助于尽早回收表中的死空间,从而减少对频繁 VACUUM 的需求,并减少关系和索引膨胀。
  • 即时后台写入策略
    • 这根据最近分配请求的移动平均值和可重用缓冲区的密度来估计它应该尝试清理多少个缓冲区。
  • 异步提交
    • 允许 COMMIT 在 WAL 完全写入之前返回控制,这允许承担一些已提交的数据在系统故障时可能丢失的风险。
  • 同步扫描
    • 允许“搭便车”其他用户的 Seq 扫描。
  • 加载分布式检查点
    • 当系统处于负载下时,延迟并分散检查点工作,这允许在负载较重时实现更平稳的性能。
  • Tuplestore 中的循环缓冲区
    • 允许合并连接避免在没有值超过工作内存的情况下将 tuplestore 溢出到磁盘。
  • Varlena 标头大小减少(“Var-Varlena”)
    • 缩小大多数可变大小字段的标头大小。可以将整个数据库大小缩小多达 20%。
  • LIKE/ILIKE 搜索速度提升
  • Top-N 排序
  • 延迟 XID 分配
    • 在 PostgreSQL 中,所有事务都将获得一个特定的事务 ID。随着这些 ID 的使用,必须进行额外的维护以确保事务 ID 从不冲突。此更改使 PostgreSQL 仅对涉及 DDL/DML 操作的事务使用事务 ID,这些操作通常是唯一需要记录事务 ID 的操作。
    • 任何使用 PostgreSQL 的人都会从中受益,因为总体事务 ID 使用率会降低。这将特别有助于那些运行大量只读事务的数据库,从而减少对真空的需要以防止 XID 回滚。
  • MS Visual C++ 支持;
    • 允许使用 MS C++ 编译器编译 PostgreSQL 源代码,而不是使用第三方 MinGW 工具集。这将提高性能,并应提高 MS 平台上的稳定性;
    • 任何在 win32 上使用 PostgreSQL 的人都将从中受益,并且由于标准 Windows 发行版现在将使用它,因此您无需执行任何操作,只需升级即可。

管理

  • CSV 日志输出
    • 允许将日志记录到 csv 文件,从而可以轻松地将日志加载到数据库中以进行性能分析。
  • 函数成本
    • 改进的查询计划优化。
  • 每个函数 GUC 设置
    • 允许函数在函数创建时嵌入 GUC 设置。对于诸如在创建时定义函数的搜索路径之类的事情特别有用,这加强了安全性。
    • 任何使用 PostgreSQL 函数的人员都应对此进行审查,并查看他们是否需要设置诸如模式的预定义 search_paths 之类的东西,或者可能设置其他设置。
  • GSSAPI 支持
    • 一种新的身份验证方法,它在多个平台上替换 Kerberos。这应该允许 PostgreSQL 更好地集成到现有的网络身份验证系统中。
    • 任何使用 GSS 进行安全的人员(通常在 Windows 网络上找到)
  • 创建表,包括索引
    • 对 alter table 语法的修改,允许在新的表上创建索引。
    • 任何在带有索引的表上使用 create table like 的人。对于创建新的表分区特别有用。
  • 索引顾问 ?
  • 多个自动真空工作器
    • 一项更改,允许从自动真空启动多个进程,以便可以同时真空多个表。有多个选项可以控制何时以及为什么启动额外的工作器。
    • 任何使用自动真空并且具有大型表和小型、频繁更新的表的人员,这些表过去常常在等待其他表完成时膨胀。
  • Pg_standby
    • 使使用 PITR 功能为备用服务器变得更容易。
  • BGwriter 系统视图
    • 让您了解是否需要调整 BGWriter。

开发者

  • 全文搜索;
    • 以前在 contrib 中可用的代码已推送到服务器中。这将使 tsearch 更容易上手、更容易使用,并且还应使升级变得不那么痛苦。
    • 目前使用 tsearch 的任何人,或者任何希望在其数据库中实现全文搜索的人员
  • 计划失效
    • 允许 PostgreSQL 从函数中清除缓存的查询计划。
    • 对任何使用 plpgsql 的人都有用,尤其是那些使用临时表的人。
  • XML 支持
    • 这种新的数据类型 (XML) 验证输入是否格式正确,并具有一组类型安全的运算。
    • SQL/XML 发布函数,根据 SQL:2003。
    • 用于 XPath 1.0 表达式评估的 xpath() 函数(支持 XML 命名空间)。
    • 替代 XML 导出函数。
  • UUID
    • 这种新的 128 位类型可以通过合适的算法生成,因此它极不可能被其他人生成,并提供比序列生成器更好的唯一性保证。
  • 复合类型的数组
    • 现在可以使用复合类型(返回单个类型的多个列的类型,例如表类型或自定义类型)创建数组。
    • 任何当前使用自定义类型的人现在都可以使用数组,尤其是函数开发人员在获取函数和变量的进出数据方面将有更大的灵活性。
  • 表函数支持
  • 可更新游标
  • PL/pgSQL 中的可滚动游标
  • ORDER BY 空值优先/最后
    • 新的语法允许您控制空值在 SQL 输出中排序的位置。
    • 任何必须处理空值和排序的人现在将拥有更灵活的语法。
  • 枚举;
    • 一种数据类型,允许您定义特定数量的元素,并具有预定义的排序顺序。它通常用作小型静态查找表的替代。
    • 设计系统的开发人员和 DBA 可以使用它以多种方式简化模式和代码。此外,从具有枚举的其他数据库迁移的用户现在将更容易。
  • 索引(B-Tree 和 GiST)可用于 IS NULL 子句
    • 由 Teodor Sigaev 建议 - 尚未有进一步的解释
  • 用户定义的类型现在可以具有类型修饰符
    • 由 Teodor Sigaev 建议 - 尚未有进一步的解释

第三方

  • pgBouncer
    • PostgreSQL 的轻量级连接池器。
    • 任何进行高流量数据库使用的人员,连接数量很多,尤其是那些没有应用程序级连接池的人员。
  • pl/proxy
    • 作为 PL/ 语言实现的数据库分区系统。
    • 希望跨多个服务器水平扩展数据库的人员。
  • pgSNMPd
    • SNMP 监控工具,允许 SNMP 客户端查询 PostgreSQL 实例状态的各个方面。
    • 任何当前通过 SNMP 监控网络系统的人员,或者那些正在寻找 PostgreSQL 监控解决方案的人员。
  • sepgsql
    • 基于 SELinux 模型和策略的安全扩展,允许将统一的 SELinux 策略应用于操作系统和 DBMS。
    • 使用 SELinux 并且需要在数据库中进行细粒度、集成访问控制的人员。
  • pl/pgsql 调试器
  • [1]
    • 允许与 pl/pgsql 代码进行选择性交互。
    • 任何使用或计划使用 pl/pgsql 进行开发的人员。

推迟到 8.4

除了 待办事项列表 之外,已经有一个正在为 8.4 推迟的项目“队列”。

  • 并发 psql
    • 允许 psql 同时打开多个连接。这将有助于人们测试可能影响多个会话的功能。
  • 死空间图
    • 类似 FSM 的结构,用于收集元组已过期页面的位置,这应该支持更有效的 VACUUM 过程。
  • PL/PSM - ANSI 标准存储过程语言的实现
  • 磁盘上的位图索引
    • 有助于 OLAP 加载
    • 现有的“位图索引扫描”功能使此功能不再那么紧迫。
  • POSIX 共享内存支持
  • 流位图扫描
  • 分组索引元组
    • 多个元组具有相同索引值的索引的更有效表示。
  • 在 INSERT 上维护 CLUSTER 顺序
    • 应该导致从 CLUSTER 排序中受益的查询的性能更好。