postgresql 多进程改多线程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
YanSeven
V2EX    PostgreSQL

postgresql 多进程改多线程

  •  
  •   YanSeven 11 小时 37 分钟前 1066 次点击
    pg 是多进程模型的,那么我有如下几个问题:

    1. 在现在的软件实践中,总体而言,大型基础软件的多线程模型是否比多进程更有优势。
    2. pg 有必要改成多线程模型吗。
    3. pg 官方有讨论过改多线程模型吗。
    4. pg 如果要改的话,哪一块儿是有必要改的,哪一块儿是没必要改的。
    5. pg 如果要改的话,哪一块儿是好改的,哪一块儿是不好改的。
    5. 改完之后,除了有个“噱头”用来写宣传文章,真的有收益吗。性能上,运维上,兼容性上有价值吗。
    4 条回复    2025-12-18 10:55:07 +08:00
    codehz
        1
    codehz  
       11 小时 4 分钟前   1
    为什么这种 1 秒钟就能搜索到的内容要放在这里问。。。
    https://wiki.postgresql.org/wiki/Multithreading
    YanSeven
        2
    YanSeven  
    OP
       10 小时 54 分钟前
    @codehz 感谢
    crazzy
        3
    crazzy  
       10 小时 51 分钟前   3
    你问这些问题,大概率证明你思考了,但是却只思考了一点点。我是想回答又不想回答你,但是我既然准备回复你,就不做无意义回复。


    进程、线程、协程甚至于 goroutine 都是并发模型,不同的模型因为实现机制不同,在不同的场景下各有优劣,并不是绝对的优劣势。

    例如,进程的上下文切换开销大,线程的上下文切换开销小,那么单纯考虑上下文切换开销,我们就选择多线程模型吗?为什么不考虑协程或 goroutine ?

    PostgreSQL 选择多进程模型是因为在它最初开始开发的时候,线程在各个操作系统中是一个很新颖的东西,而进程却很成熟了,没得选。

    对于数据库这种有很多共享数据的软件,从理论上多线程就比多进程有优势,所以后期很多数据库都是多线程模型。


    - 有没有讨论过改、有没有必要改;要学会自己收集信息,邮件列表是公开的,不回答
    - 在一定要改动的情况下,必要和非必要、好改和不好改的区分;在你没有阅读过源码、了解其生态的情况下,仅有一个答案有什么意义?不回答
    - 改成多线程模型后的收益;这个问题问的,你可能都没有深入的使用过 PostgreSQL ,也不了解并发模型,可能你就是制造一个噱头来提问的吧...
    YanSeven
        4
    YanSeven  
    OP
       10 小时 45 分钟前
    @crazzy 感谢回复!我在一个和数据库相关的边缘团队里面供职才不久,目前听到上头的人在讨论做 pg 的二开改动,所以有次疑问,如您精准的判断,我对 pg 的认识仍然是皮毛。由于用 ai 用多了,所以打字的时候不自觉的就把提问加的嗦了,已经检索到相关的社区讨论了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2919 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 13:40 PVG 21:40 LAX 05:40 JFK 08:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86