V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cstj0505
V2EX  ›  数据库

这回是 mysql5.7 和 pg9.6 了, mysql 还是差 pg 很多

  •  
  •   cstj0505 · 2016-10-19 11:52:01 +08:00 · 2547 次点击
    这是一个创建于 2717 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上次发现 mysql 和 pg 性能差太多,然后就发了个帖: https://www.v2ex.com/t/298841#reply22

    不少人说 mysql 改用 5.7 ,然后发现默认下 5.7 性能还不如 5.5. 数据库写入 mysql 的 InnoDB 实在太慢, SSD 情况下也才 1 万 5 左右, 4 个线程同时写入每个 1.3 万。 pg 一个线程就 7.8 万了。

    然后全表扫描上,我把 mysql 的 InnoDB 和 MyISAM 都尝试了, sql 是: select max(sa) from (select c,sum(a) sa from PXFTEXTTB group by c order by 2) t; 1 亿条数据的时候, InnoDB 67.59 秒, MyISAM 40.92 秒, pg 是 12.28 秒 5000 万差别最大, InnoDB 34.34 秒, pg9.6 4.14 秒

    而且索引 pg 也比 mysql 快。 a 字段是 sequence ,值从 1-1 亿。在 a 上创建 btree 索引,对 10 万条汇总。 sql 为: select sum(c) from PXFTEXTTB2 where a<70000000 and a>69900000; InnoDB : 0.19 秒 MyISAM : 0.14 秒, pg : 0.038 秒

    29 条回复    2016-10-20 10:37:09 +08:00
    Lao9
        1
    Lao9  
       2016-10-19 12:05:51 +08:00 via iPhone
    这是肯定的、写入速度 pg 天然就有优势 。
    cstj0505
        2
    cstj0505  
    OP
       2016-10-19 12:22:37 +08:00
    @Lao9 查询也差相当多,我最开始诧异的就是查询速度
    Infernalzero
        3
    Infernalzero  
       2016-10-19 13:32:19 +08:00
    只是你对 mysql 的了解不够而已,不然现在大型互联网公司为何都是清一色选择 mysql?
    dontwanttologin
        4
    dontwanttologin  
       2016-10-19 13:36:04 +08:00
    pg 有什么好用/用的顺手一些的客户端工具吗? MySQL 配合 Sequel Pro 用的很爽。
    wsy2220
        5
    wsy2220  
       2016-10-19 13:38:00 +08:00
    pgsql 用起来比 mysql 爽多了
    pmpio
        6
    pmpio  
       2016-10-19 13:40:20 +08:00
    而且,据说 pg 比 mysql 更遵守 SQL 规范。。。
    jackysc
        7
    jackysc  
       2016-10-19 13:47:28 +08:00
    @dontwanttologin pgadmin 试试
    faywong8888
        8
    faywong8888  
       2016-10-19 13:50:42 +08:00 via Android
    pgadmin +1
    jjx
        9
    jjx  
       2016-10-19 13:55:25 +08:00
    用 mysql 多的是先入为主,而且是有积累了, 掉头不容易

    pg 对复杂查询的性能远超 mysql, 稳定性也远超 mysql, 在企业软件中不用 pg, 是你的损失
    twl007
        10
    twl007  
       2016-10-19 13:56:22 +08:00
    为什么不跟 MariaDB 对比一下呢 0 0
    cstj0505
        11
    cstj0505  
    OP
       2016-10-19 14:00:22 +08:00
    @Infernalzero 我尽量选的相同的功能来测的,都是全表扫描,都是 btree 索引,这个和我了不了解 mysql 有什么关系?
    另外, mysql 作为 lamp 的一员随着互联网发展起来并广泛传播,而且入门简单,这和 mysql5.7 的性能没 pg9.6 好有关系吗?
    cstj0505
        12
    cstj0505  
    OP
       2016-10-19 14:01:43 +08:00
    @twl007 回头有时间试试,确实现在 mariaDB 才是 mysql 正统。
    cstj0505
        13
    cstj0505  
    OP
       2016-10-19 14:02:35 +08:00
    @dontwanttologin pgadmin+1
    VeryEase
        14
    VeryEase  
       2016-10-19 14:07:10 +08:00
    @dontwanttologin 可以使用 Navicat for Postgresql 精简版, 授权费用不到 300 ,个人可以承受,已经够用了,经济允许可以买完全版本,带模型设计功能。 pgadmin3 是开源的,也一直在用,功能略微简单,最新出来的 pgadmin4 比较强大,但是卡到不行,而且用了几次有崩溃的情况,直接删除了。
    Infernalzero
        15
    Infernalzero  
       2016-10-19 14:08:47 +08:00
    @cstj0505
    测这种, innodb_flush_log_at_trx_commit 参数你改了吗,其他还有不少呢
    真以为 mysql 只是因为 lxmp 才用的多?
    不说淘宝,fb 这些特别大型的公司, uber 之前都因为 pg 太坑转了 mysql
    ivmm
        16
    ivmm  
       2016-10-19 14:14:04 +08:00
    Mysql 要用企业版去比。

    社区的话,得用 Percona 和 MariaDB 来对比
    cstj0505
        17
    cstj0505  
    OP
       2016-10-19 14:19:44 +08:00
    @Infernalzero 改完之后就没一个统一的尺度了,牺牲一些东西追求极限性能,这也不是通常的应用场景吧。

    我从 1000 万, 5000 万,刀 10000 万数据都试了一遍, pg 写入查询都比 mysql 好很多。

    都是默认配置下测的, pg 也没做任何修改。

    另外 uber 这件事请有些 pg 的原因,但是事实上也和 uber 工程师不太了解 pg 有关。

    不少人回应过那篇文章,包括上次那个帖子离也有人提到了。

    你只要稍微动动手指就能查到。
    cstj0505
        18
    cstj0505  
    OP
       2016-10-19 14:21:16 +08:00
    @ivmm 有时间再试试 mariDB
    choury
        19
    choury  
       2016-10-19 14:34:10 +08:00
    @cstj0505 好吧,默认配置……
    mathgl
        20
    mathgl  
       2016-10-19 15:05:21 +08:00
    @cstj0505 uber 那件事在 pg list 有讨论。它的问题现在 pg 都有解决方案。至于它为什么要换库,这个不完全是技术的原因。
    Sharuru
        21
    Sharuru  
       2016-10-19 15:55:46 +08:00
    pgAdmin4 竟然是 web application...启动速度感人。
    cstj0505
        22
    cstj0505  
    OP
       2016-10-19 15:57:32 +08:00
    @Sharuru web application 了?汗,还在用 3
    kideny
        23
    kideny  
       2016-10-19 16:10:20 +08:00
    不是为了省钱, 100 万台 access 服务器,也能抗大型网站吧。
    cstj0505
        24
    cstj0505  
    OP
       2016-10-19 16:11:14 +08:00
    @twl007 用 mariaDB10.1 试了下, 3 个线程同时写, InnoDB 表单线程写入 2 万,比 mysql 的 1.3 万高了 50%.
    奇怪 MyISAM 只有 1 万 8 。 3 线程写, pg 单线程 6.5 万

    1000 万条执行上面那个 max 查询:
    InnoDB : 28.10s
    MyISAM : 1.90s
    pg : 0.857s
    lightening
        25
    lightening  
       2016-10-19 16:12:54 +08:00
    @dontwanttologin 我用 Postico
    cheetah
        26
    cheetah  
       2016-10-19 16:22:04 +08:00
    Postico+1
    reus
        27
    reus  
       2016-10-19 20:44:40 +08:00
    就算比 mysql 慢,还是用它,因为查询、数据类型都比 mysql 强太多。
    banxi1988
        28
    banxi1988  
       2016-10-19 21:06:53 +08:00
    Postico + 1
    很好用. 不过注意是 Mac Only
    Jaylee
        29
    Jaylee  
       2016-10-20 10:37:09 +08:00
    Postico+2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3478 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 10:56 · PVG 18:56 · LAX 03:56 · JFK 06:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.