8.3 版本新特性
来自 PostgreSQL wiki
跳转到导航跳转到搜索8.3 版本完整新特性列表
以下列表涵盖了 8.3 版本中的大多数新特性,但不包括全部。由于新特性数量众多,所以按照用途分组,描述简短。有关更多详细信息,请参阅 PostgreSQL 文档和发行说明。
性能
性能一致性
这些特性提高了 PostgreSQL 在不同服务器负载下提供一致响应时间的性能。
- HOT
- 堆上元组(HOT)显著减少了与频繁更新数据相关的数据库维护问题,减少了 vacuum 的需求,并为某些应用程序提供了大量的吞吐量提升。
- 异步提交
- 允许 COMMIT 返回控制权,而无需等待物理磁盘写入。这在潜在的系统故障情况下,可以以可能丢失一定数量的事务为代价,获得更好的响应时间。
- 负载分布式检查点
- 检查点自动调整延迟并分散检查点写入,减少了系统负载过重时检查点对响应时间的影响。
- 即时后台写入策略
- 后台写程序的自动调整根据最近活动的统计数据来估计它应该尝试清理多少缓冲区。
速度提升
许多新特性显著提高了特定操作的速度。
- Tuplestore 中的循环缓冲区
- 允许 Merge Joins 避免将临时文件写入磁盘,前提是所有值都不超过可用的工作内存,这大大加快了小型 Merge Joins 的速度。
- LIKE/ILIKE 搜索速度提升
- Top-N 排序优化器改进
- 延迟 XID 分配
- PostgreSQL 事务都被赋予了一个特定的事务 ID,并且需要进行维护开销以确保这些事务 ID 从不冲突。现在 PostgreSQL 只对 DDL/DML 操作使用事务 ID,而 DDL/DML 操作通常是唯一需要记录事务 ID 的操作。这将导致读为主的或只读数据库的吞吐量明显提高。
- 函数成本计算
- 允许您向查询规划器提供估计的函数执行成本和返回的行数,从而在使用自定义函数时获得更好的查询计划。
- 恢复时间改进
- 通过效率改进,恢复时来自预写日志的 I/O 量减少了一半。
大型数据库
一些改进将允许用户在 PostgreSQL 上运行更大的数据仓库。
- 同步扫描
- 在扫描大型表时,这允许“搭便车”到其他用户的顺序扫描,从而大大减少磁盘读取。
- L2 缓存扫描保护
- 新的代码优化减少了 CPU 缓存抖动,从而提高了并发查询的速度。
- Varlena 标头大小减少(“Var-Varlena”)
- 缩小了大多数可变大小字段的标头大小,将总体数据库大小减少了 20%。
Windows 性能
不,我们并没有忘记我们的 Windows 用户。8.3 使 Windows 更接近成为 PostgreSQL 的一流平台。
- MS Visual C++ 支持;
- 允许使用 Microsoft 的 C++ 编译器来编译 PostgreSQL 源代码,而不是使用第三方 MinGW 工具集。这提高了 MS 平台上的性能和稳定性。任何在 Win32 上使用 PostgreSQL 的用户都会受益,并且由于标准的 Windows 发行版使用它,因此您无需执行任何操作,只需升级即可。
- 后端启动代码的重新设计
- 大大减少了 postmaster 中的内存空间需求,允许运行更多并行后端。
管理
- CSV 日志输出
- 日志记录到可加载数据库的文件,便于轻松创建临时日志和性能分析工具。
- GSSAPI 和 SSPI 支持
- PostgreSQL 现在支持行业标准的安全的 GSSAPI API,用于使用 Kerberos 进行身份验证,从而更轻松地集成到大型企业网络中。在 Windows 上,SSPI 也支持 Kerberos 和 NTLM 身份验证。
- 每个函数的 GUC 设置
- 允许函数在函数创建时嵌入 GUC 设置。对于定义函数创建时的搜索路径等内容特别有用,这将加强安全性。
- 创建表像包括索引
- 对 ALTER TABLE 语法的修改,允许在新的表或分区上自动创建索引。
- 多个自动真空工作器
- 允许从自动真空启动多个进程,以便可以同时真空多个表。有几个选项可以控制何时以及为何启动额外的工作器。
- pg_standby
- 一个管理工具,使暖备服务器的配置更加容易。
开发者
应用程序开发
- 全文搜索;
- TSearch2 已完全集成到核心代码中,并具有更简洁的 API。这使 TSearch 更易于使用,并易于使用新的语言、词典和加权系统进行扩展。
- 计划失效
- 允许通过应用程序调用清除缓存的计划,并在更新表时自动删除计划。
- 可更新游标
- 游标现在支持 WHERE CURRENT OF,使基于游标的应用程序设计更加灵活。
新的数据类型
- XML 支持
- 这种新的数据类型 (XML) 验证输入的格式正确性,并有一组类型安全的运算。
- 根据 SQL:2003 的 SQL/XML 发布函数。
- 用于 XPath 1.0 表达式计算的 xpath() 函数(支持 XML 命名空间)。
- 替代 XML 导出函数。
- UUID
- 这种新的 128 位类型与大多数常见的 GUID 和 UUID 生成器兼容,支持分布式应用程序设计。
- 复合类型的数组
- 现在可以使用复合类型创建数组(为单个类型返回多个列的类型,例如表类型或自定义类型)
- 任何当前使用自定义类型的人现在都可以使用数组,特别是函数开发人员在将数据传入和传出函数和变量时将拥有更大的灵活性。
- ENUM;
- 一种数据类型,允许您定义特定数量的元素,并具有预定义的排序顺序。它通常用作小型静态查找表的替代品。
存储过程
- RETURN TABLE 语句
- PL/pgSQL 中的可滚动游标
- ORDER BY nulls first/last
- 这种新的语法允许您控制空值在 SQL 输出中的排序位置。任何必须处理空值和排序的人现在都将拥有更大的灵活性,并具有更简单的语法。
- 索引(B-Tree 和 GiST)可用于 IS NULL 子句
- Teodor Sigaev 建议 - 尚无进一步说明
- 用户定义类型现在可以具有类型修饰符
- Teodor Sigaev 建议 - 尚无进一步说明
附件
- pgBouncer
- PostgreSQL 的轻量级连接池
- 任何进行高流量数据库使用的人,连接数量庞大,特别是对于那些没有应用程序级连接池的人。
- pl/proxy
- 作为 PL/ 语言实现的数据库分区系统
- 希望将数据库水平扩展到多个服务器的人员
- 使用 8.3 中的新复制挂钩
- pgSNMPd
- SNMP 仪表,允许 SNMP 客户端查询 PostgreSQL 实例状态的各个方面
- 任何当前通过 SNMP 监控网络系统的人,或者那些正在寻找 PostgreSQL 监控解决方案的人。
- sepgsql
- 基于 SELinux 模型和策略的安全扩展,允许将统一的 SELinux 策略应用于操作系统和 DBMS。
- 使用 SELinux 并需要在数据库中进行细粒度、集成访问控制的人员。
- pl/pgsql 调试器
- 允许选择性地与 pl/pgsql 代码进行交互
- 任何使用或计划使用 pl/pgsql 进行开发的人员
- pgpool-II
- 启用并行查询处理,其中多个 PostgreSQL 服务器连接并同时执行查询
- 任何需要使用复制服务器加速单个查询的人员
- Bucardo
- 异步 PostgreSQL 复制系统,允许进行多主和多从操作
- 任何需要更复杂的复制解决方案的人员
- 使用 8.3 中的新复制挂钩。
- Slony-I 2.0
- 使用 8.3 中的新复制挂钩。