IvorySQL 2.1发布 | 紧跟PG15.1,新增功能【全局唯一索引】

IvorySQL团队发布了2.1版本,该版本与PostgreSQL15.1同步,提供性能改进、日志增强和逻辑复制优化。新特性包括全局唯一索引,适用于分区表以确保跨分区的唯一性。此版本与1.5兼容,无需迁移。用户可从官方链接下载最新稳定版。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在圣诞到来之际

我们的新版本如约而至

IvorySQL全球开发组始终保持与PostgreSQL最新版本内核同步,基于PostgreSQL刚刚发布的最新版本15.1,现已发布IvorySQL 2.1。
有关发行说明,请参阅以下内容。
 

最新稳定版本下载链接:
https://github.com/IvorySQL/IvorySQL/releases/tag/Ivory_REL_2_1
瀚高友情提供 IvorySQL YUM源:
https://yum.highgo.ca/ivorysql.html
发行日期:2022年12月14日


概述

IvorySQL 2.1 基于 PostgreSQL 15.1 并包含 IvorySQL 1.5 之后的各种修复和新功能。

此版本与 IvorySQL 1.5 兼容,并且不需要为运行 IvorySQL 1.X 的用户进行转储/恢复。

Bug修复

IvorySQL 2.1 包含来自 PostgreSQL 15.0 和 15.1 的各种修复:

  • 改进的排序性能和压缩

  • 日志记录和配置增强

  • 更微调的逻辑复制选项等

有关 PostgreSQL 15 和 15.1 中更详细的更新和错误修复,请参阅官方PostgreSQL 15.0发行说明和PostgreSQL 15.1 发行说明。

PostgreSQL15.0发行说明链接:

https://www.postgresql.org/docs/release/15.0/

PostgreSQL15.1发行说明链接:
https://www.postgresql.org/about/news/postgresql-151-146-139-1213-1118-and-1023-released-2543/

新功能

[全局唯一索引]
“全局唯一索引” 是分区表上的唯一索引,可以使用非分区键确保跨分区唯一性。此功能可用于IvorySQL的 Postgres模式 和 Oracle 兼容模式。

可以在针对分区表运行的“CREATE INDEX”语句中使用“GLOBAL”和“UNIQUE”子句创建全局唯一索引。

有关详细信息,请参阅 IvorySQL 用户文档。
文档链接:
https://ivorysql.org/zh-CN/docs/Global%20Unique%20Index/create_global_unique_index

贡献

以下个人作为补丁作者、提交者、审阅者、测试者或问题报告者为本版本做出了贡献。

  • Cary Huang

  • David Zhang

  • Grant Zhou


关于IvorySQL

IvorySQL项目是一个具有广泛生态基础和中国特色的PG开源衍生项目,是瀚高股份设计研发的一款具备强大Oracle兼容能力的开源数据库。具备高兼容性和高可用性,并致力于遵守'the open-source way'。

官方网址

https://www.ivorysql.org/zh-cn/

社区仓库

https://github.com/IvorySQL/IvorySQL

IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!

还有,别忘了在GitHub给我们一个 ⭐奥~

PostgreSQL 中,唯一索引的访问方法或访问类型主要依赖于索引的实现机制以及系统对索引的管理方式。唯一索引的核心目标是确保数据表中某一列或多列的值在所有行中保持唯一性[^1]。 ### 唯一索引的访问方法 PostgreSQL 通过 `pg_am` 系统目录表来管理不同的索引访问方法(也称为索引类型)。每种索引访问方法都对应一组操作函数,这些函数定义了索引如何存储和检索数据。对于唯一索引而言,其访问方法需要支持唯一性约束的检查,这通常涉及以下关键操作: - **插入时的唯一性检查**:当向表中插入新行时,索引访问方法需要验证新行的键值是否已存在于索引中。如果存在,则插入操作将被拒绝,以维护唯一性约束。 - **更新时的唯一性检查**:在更新行的索引列时,同样需要执行类似的唯一性检查,以防止更新后的值与其他行冲突[^5]。 目前,PostgreSQL 支持多种索引类型,包括 B 树、GiST、GIN 和 BRIN 等,其中只有 B 树索引可以用于创建唯一索引。B 树索引是最常用的索引类型,它不仅支持单列索引,还支持多列索引,能够高效地处理等值查询和范围查询[^4]。 ### 创建唯一索引的方式 在 PostgreSQL 中,可以通过 `CREATE UNIQUE INDEX` 命令来创建唯一索引。例如,若想在一个名为 `employees` 的表上创建一个基于 `email` 列的唯一索引,可以使用如下命令: ```sql CREATE UNIQUE INDEX idx_employees_email ON employees (email); ``` 此命令会为 `employees` 表的 `email` 列创建一个唯一索引,确保所有行中的 `email` 值都是唯一的。对于多列唯一索引,只需在命令中指定多个列名即可,如: ```sql CREATE UNIQUE INDEX idx_test_major_minor ON test2 (major, minor); ``` 这条命令将在 `test2` 表的 `major` 和 `minor` 列上创建一个复合唯一索引,保证这两个列组合的所有值在整个表中都是唯一的[^3]。 ### 使用场景与注意事项 - **选择合适的列**:创建唯一索引时,应优先考虑那些经常用于查询条件且具有较高选择性的列。此外,对于多列索引,应当根据查询模式选择最常一起使用的列组合。 - **性能影响**:虽然唯一索引有助于提高查询效率并确保数据完整性,但它们也会对写入操作(如插入和更新)造成一定的性能开销,因为每次写入都需要进行额外的唯一性检查。 - **限制**:每个索引最多可以包含 32 个列,这一限制适用于所有类型的索引,包括唯一索引[^4]。 综上所述,PostgreSQL 中的唯一索引主要通过 B 树索引实现,并利用 `pg_am` 中定义的操作函数来完成唯一性检查。创建唯一索引时,用户需要仔细选择索引列,权衡查询性能与写入成本之间的关系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值