RDS for PostgreSQL 中支持的排序规则 - Amazon Relational Database Service

RDS for PostgreSQL 中支持的排序规则

排序规则是一组规则,用于确定如何对存储在数据库中的字符串进行排序和比较。排序规则在计算机系统中起着重要作用,并作为操作系统的一部分包含在其中。当向语言中添加新字符或排序规则发生变化时,排序规则会随着时间的推移而变化。

排序规则库为排序规则定义特定的规则和算法。PostgreSQL 中最常用的排序规则库是 GNU C(Glibc)和 Unicode 国际化组件(ICU)。原定设置情况下,RDS for PostgreSQL 使用 Glibc 排序规则,其中包括适用于多字节字符序列的 Unicode 字符排序顺序。

当您在 RDS for PostgreSQL 中创建新的数据库实例时,它将检查操作系统中是否有可用的排序规则。CREATE DATABASE 命令的 PostgreSQL 参数 LC_COLLATELC_CTYPE 用于指定排序规则,该排序规则是该数据库中的原定设置排序规则。或者,您也可以在 CREATE DATABASE 中使用 LOCALE 参数来设置这些参数。这决定了数据库中字符串的原定设置排序规则以及将字符分类为字母、数字或符号的规则。您也可以选择用于列、索引或查询的排序规则。

RDS for PostgreSQL 依赖于操作系统中的 Glibc 库来提供排序规则支持。RDS for PostgreSQL 实例定期使用最新版本的操作系统进行更新。这些更新有时包含较新版本的 Glibc 库。较新版本的 Glibc 很少会更改某些字符的排序顺序或排序规则,这可能会导致数据的排序方式不同或生成无效的索引条目。如果您在更新期间发现用于排序规则的排序顺序有问题,则可能需要重建索引。

为了减少 Glibc 更新可能产生的影响,RDS for PostgreSQL 现在包含一个独立的原定设置排序规则库。这个排序规则库在 RDS for PostgreSQL 14.6、13.9、12.13、11.18、10.23 和更高的次要版本中可用。它与 Glibc 2.26-59.amzn2 兼容,并提供排序顺序稳定性以防止错误的查询结果。