区域设置(Locale)是指应用程序尊重特定地理区域和文化群体关于字母表顺序、文本比对排序、数值与货币符号排版等习惯的软件规范。PostgreSQL 深度集成了标准 ISO C 与 POSIX 区域设置规范。
区域设置在通过 initdb 初始化集群时自动确立。默认继承当前操作系统环境变量的区域配置,也可以通过参数显式声明:
initdb --locale=zh_CN.UTF-8
系统允许对不同维度的本地化规则进行灵活组合配置:
LC_COLLATE | 文本字符串的比对与物理排序次序 |
LC_CTYPE | 字符属性分类(哪些属于字母、大小写转换规则) |
LC_MESSAGES | 系统日志与报错信息的输出自然语言 |
LC_MONETARY | 货币金额的格式化排版规则 |
LC_NUMERIC | 数值常量的千分位与小数点排版规则 |
LC_TIME | 日期与时间的星期、月份名称排版规则 |
需要特别关注的是,非 C 语言环境下的字符串比对需要根据多级字典序进行权重计算,相较于纯字节逐字节比对具备一定的性能开销。若业务对文本排序完全不敏感且极致追求性能,可在建库时选择 C 或 POSIX 区域设置。