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

mysql, pgsql 默认配置情况下吹一波 postgresql 了

  •  
  •   cstj0505 · 2016-08-12 11:43:27 +08:00 · 2130 次点击
    这是一个创建于 3029 天前的主题,其中的信息可能已经有所发展或是发生改变。

    今天做一个 python 链数据库的练习。 结果 psycopg2 和 pg9.6 不兼容。 就另外装了 mysql5.5 。

    机器: OS:debian jessie cpu : 6700hq 内存: 16G 硬盘: 256 ssd+2T 机械硬盘 数据库 datadir 都在 ssd 上。

    都是默认配置,没有任何优化。

    导数:使用 kettle 把机械硬盘上的文本写到数据库里。 etl 程序同一个,就是改了数据库链接。数据条数 700 多万条。 pg 写入速度: 25000r/s mysql:12000r/s

    查询: select clientip,sum(totservertime) from videolog group by clientip order by sum(totservertime) desc; 运行时间: pg : 3s mysql : 1 min 4.60 sec

    postgresql 这波鸡血打的真足。

    25 条回复    2016-10-19 19:12:53 +08:00
    est
        1
    est  
       2016-08-12 12:14:11 +08:00
    9.6 怎么也得跟 5.7 比吧。
    aphorism
        2
    aphorism  
       2016-08-12 12:29:21 +08:00
    按照我一直以来的看法, PostgreSQL 的功能、性能、可扩展性等比 MySQL 不知道高到哪里去了;不过说到流行度, MySQL 就要略胜一筹。
    cstj0505
        3
    cstj0505  
    OP
       2016-08-12 12:37:57 +08:00
    @aphorism 我也一直用 postgresql ,以前看评测说性能差不多。
    不过这次测试真的大吃一惊
    okampfer
        4
    okampfer  
       2016-08-12 12:41:45 +08:00
    跟 python 的连接库有没有关系呢?
    nikoukou
        5
    nikoukou  
       2016-08-12 12:42:21 +08:00
    求问楼主的实验数据哪里弄来的。。 pq 对地理数据的支持是最好的。
    mathgl
        6
    mathgl  
       2016-08-12 12:58:05 +08:00
    试试看 percona mysql 5.7 + rocksdb engine
    greenskinmonster
        7
    greenskinmonster  
       2016-08-12 13:08:03 +08:00 via Android
    前几天看新闻 Uber 从 PostgreSQL 迁移到 MySQL 了,不过一直都想试试 PostgreSQL
    zwh8800
        8
    zwh8800  
       2016-08-12 14:55:33 +08:00
    索引呢?表结构呢?这些不讲的话结果没意义。
    cstj0505
        9
    cstj0505  
    OP
       2016-08-12 16:31:55 +08:00
    @zwh8800 建表语句表结构都一样,没有使用索引
    cstj0505
        10
    cstj0505  
    OP
       2016-08-12 16:32:40 +08:00
    @nikoukou 不是地理数据,是网站的访问 log , kettle 格式化成规则的数据
    yangdehua
        11
    yangdehua  
       2016-08-12 16:41:22 +08:00
    innodb 的配置敢不敢发一波,说不定是你的配置不匹配呢, heavy write 的场景下, innodb 也有很多优化手段的
    nikoukou
        12
    nikoukou  
       2016-08-12 16:44:16 +08:00
    @nikoukou 多谢。
    zwh8800
        13
    zwh8800  
       2016-08-12 16:50:30 +08:00
    @cstj0505 不加索引, select 肯定慢出翔。学数据库很大部分是学怎么加索引。

    你不如在 mysql 下执行一下 `explain select clientip,sum(totservertime) from videolog group by clientip order by sum(totservertime) desc;` mysql 会给你讲解出你这条语句为什么执行的这么慢。
    pubby
        14
    pubby  
       2016-08-12 16:54:34 +08:00
    楼主在测默认配置的 全表扫描,怎么楼上都开始讲索引了?
    cstj0505
        15
    cstj0505  
    OP
       2016-08-12 16:55:11 +08:00
    @zwh8800 我那个 group by 做的全表扫描,学数据库的一般不对全表扫描加索引。

    我吃惊的是二者都没做任何优化这种场景下的差别。优化起来肯定是各有所长的。
    cstj0505
        16
    cstj0505  
    OP
       2016-08-12 16:57:39 +08:00
    @yangdehua

    二者都是完全默认的安装。

    要有优化的话也只能说明 mysql 默认配置在这种稍微大一点的数据量的场景下效率不高。
    cstj0505
        17
    cstj0505  
    OP
       2016-08-12 16:58:54 +08:00
    awanabe
        18
    awanabe  
       2016-08-12 16:59:46 +08:00
    @cstj0505 默认安装和 表设计又不是一回事
    jjx
        19
    jjx  
       2016-08-12 17:01:01 +08:00
    postgresql 默认 100 个连接
    cstj0505
        20
    cstj0505  
    OP
       2016-08-12 17:04:48 +08:00
    @awanabe 建表语句都是一样的。
    create table xxx (
    xxx xxx ,
    .
    .
    .

    直接 copy 过去执行的
    aphorism
        21
    aphorism  
       2016-08-12 20:01:15 +08:00
    @greenskinmonster

    看了一下这篇 https://eng.uber.com/mysql-migration/ 和这篇 https://eng.uber.com/schemaless-part-one/ ,其实准确地讲, Uber 不是转到了 MySQL ,而是转到了以 MySQL 为基础开发形成的一个私有数据库实现 SCHEMALESS 上。按照他们在博客中提到的, PostgreSQL 在基于互联网的数据复制方面有一些设计缺陷,这是很正常的。这不能证明 MySQL 比 Postgresql 更强,但可以说明 MySQL 的有些设计对于 Uber 的应用而言更合适,而且做一个 MySQL mod 比在 PostgreSQL 基础上改动可能更容易。其实要是我,可能就直接在 PostgreSQL 的基础上改造了。
    greenskinmonster
        22
    greenskinmonster  
       2016-08-12 20:43:15 +08:00
    @aphorism 嗯,我只是提一下这个事情,并没说 Mysql 和 Postgres 谁好谁坏。根据自己的应用场合选择不同的解决方案,这个才是更重要的。
    mathgl
        23
    mathgl  
       2016-10-19 15:06:36 +08:00
    @jjx 有 connection pool 100 个也够了。
    jjx
        24
    jjx  
       2016-10-19 16:45:28 +08:00
    @mathgl

    企业软件每个事务时间长, 有时会不够, 互联网应用可能好些

    现在自己部署都是默认 100 个不变, rds 用的是 200
    mathgl
        25
    mathgl  
       2016-10-19 19:12:53 +08:00
    @jjx 如果是很长的事务是不是用队列做更好些?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:56 · PVG 03:56 · LAX 11:56 · JFK 14:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.