V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bagel
V2EX  ›  程序员

你们的服务器设的什么 locale?

  •  1
     
  •   bagel · 2023-11-08 13:31:33 +08:00 · 2133 次点击
    这是一个创建于 388 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上面要跑数据库,系统 locale 用 en_US.UTF-8 还是 zh_CN.UTF-8 会影响中文搜索排序的性能吗?

    17 条回复    2023-11-10 10:46:26 +08:00
    knightdf
        1
    knightdf  
       2023-11-08 13:37:13 +08:00
    系统 locale en_US.UTF-8
    Masoud2023
        2
    Masoud2023  
       2023-11-08 13:45:12 +08:00
    数据库跟 locale 有什么关系
    ospider
        3
    ospider  
       2023-11-08 13:45:38 +08:00
    当然是 en_US ,不过跟你数据库有啥关系……
    flyqie
        4
    flyqie  
       2023-11-08 13:48:59 +08:00 via Android
    en_US
    bagel
        5
    bagel  
    OP
       2023-11-08 13:50:19 +08:00
    数据库会默认用系统的 locale 创建数据库实例。那你们是系统用 en_US.UTF-8 ,数据库单独设成 zh_CN.UTF-8 ,这样?
    fd9xr
        6
    fd9xr  
       2023-11-08 13:57:45 +08:00 via iPhone
    为什么数据库会用 zh_CN?
    bagel
        7
    bagel  
    OP
       2023-11-08 14:00:30 +08:00
    因为会存储数据包含中文,有搜索排序需求,可能 zh_CN.UTF-8 更能保证正确性?
    NessajCN
        8
    NessajCN  
       2023-11-08 14:03:01 +08:00
    @bagel 包不包含中文跟系统 locale 当然是没有半毛钱关系的
    blankmiss
        9
    blankmiss  
       2023-11-08 14:10:34 +08:00
    不知道 但是我的认知里 这两个东西应该没有任何关联 我不知道你是怎么想的
    bagel
        10
    bagel  
    OP
       2023-11-08 14:17:25 +08:00
    @NessajCN 系统的 locale 会影响数据库的 locale (除非专门设置),进而影响正确性和速度。比如汉字排序在不同 locale 下不同,性能也差几倍,刚找到篇文章: https://github.com/Vonng/pg/blob/master/app/sql-locale.md
    gadfly3173
        11
    gadfly3173  
       2023-11-08 14:33:47 +08:00 via Android
    @bagel 如果你有根据拼音排序的需求,冗余一个拼音字段比设置数据库 locale 应该是更好的选择
    NessajCN
        12
    NessajCN  
       2023-11-08 14:47:28 +08:00   ❤️ 2
    @bagel 所以你不也说了,因为数据库 locale 有时候会跟着系统 locale,「进而」对汉字排序产生影响
    也就是有影响的是「数据库 locale 」而非「系统 locale 」
    那我说「系统 locale 跟数据库包不包含中文没关系」有啥错呢...
    在 locale 敏感的环境下手动设置一个数据库 locale 难道不是理所当然的?
    Noita
        13
    Noita  
       2023-11-08 18:37:57 +08:00
    同 en_us
    fd9xr
        14
    fd9xr  
       2023-11-09 04:55:52 +08:00 via iPhone
    @bagel 没有任何关联
    cnhongwei
        15
    cnhongwei  
       2023-11-09 09:51:10 +08:00
    PG 不了解,但 Mysql 和 Oracle 都是创建数据库的时间指定字符集和排序集的。和系统 Locale 没有关系。
    daimaosix
        16
    daimaosix  
       2023-11-09 11:12:39 +08:00   ❤️ 1
    C.UTF-8
    julyclyde
        17
    julyclyde  
       2023-11-10 10:46:26 +08:00
    其实不存在“系统级”locale
    各进程都分别有自己的环境变量。环境变量未经设置的时候,才是一次性继承自上一级进程
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:45 · PVG 03:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.