用了 mysql 的同事遇到 pg 都相逢恨晚

2017-11-21 11:06:32 +08:00
 cstj0505

某业务部门的同事们,生成一亿条数据写入 mysql 数据库,花了好几个小时。

我告诉他 pg 一秒可以写十几万条,并拿出压测数据的时候,他们纷纷表示非常震惊。 这几位程序员,运维的都是工作好些年的,但之前都没听过 pg。

另外一个部门每天要把几亿条数据从 oracle 库用 navcat 搬到 mysql 库(恩,他们也没听过 pg,把最后的 mysql 库作为结果查询库),然后每天要跑 7 个小时。 听说我们大数据很快,就过来问我们怎么加快速度。乱七八糟的叹了一下午,他们想法很多,最后说要加快速度你可以装个 pg 试试。

然后他们在原来的 mysql 集群上,装了个 pg 的主备。在 oracle 生成了几亿条数据。然后分别跑了测试。 mysql 的速度和上面差不多, 但是 pg 呢,开了 10 个并行,原话如下: “ pg 的 copyin 方式,432 秒拷贝 3.68 亿条记录,cpu 最高 62%,磁盘写 io 最高 100MB/s,网络带宽最高 670Mbps。另外,磁盘占用比 mysql 少多了(大概少 50GB )。”

估计现在他们也会感觉和 pg 相逢恨晚了。

10715 次点击
所在节点    数据库
112 条回复
cstj0505
2017-11-21 16:20:41 +08:00
又问了下,pg 的 4 多秒的时候是带索引的写入,一共有 100 个索引。
crazyneo
2017-11-21 16:23:59 +08:00
说都说不到点子上,一般吹 pg 比 mysql 好都是要吹流复制、并行读写、pgxz/gpdb 的事务管理,还有就是更完整的软件生态比如 cuda/ml 接口库,比如多应用类型支持,比如扩展数据源接口等等等等,有时候还会吹一吹查询优化器的遗传算法+动态规划。你这个例子里 pg 支持的列存引擎是速度差异的最重要因素,估计你光看结果都不知道为啥……
只做应用和运维的话,最好不要贬低一个抬高另一个。
assad
2017-11-21 16:51:03 +08:00
还是喜欢 Mysql,坑大家都踩的差不多了。好解决
sunsh2017
2017-11-21 17:11:24 +08:00
我用 pg 的原因是,它支持的数据类型比较多,array,jsonb 数据类型,都很不错。
cstj0505
2017-11-21 17:15:09 +08:00
@crazyneo 你哪里看到我用了列存?还是你自己脑补的,“估计你光看结果都不知道我说了什么吧”

你列的那些需要吹吗,用过的人自然懂,没用过的你和他说他也不知道。基本的 copyin 你看有几个人知道
XIVN1987
2017-11-21 17:24:53 +08:00
好奇,,为什么快那么多??原因是啥?
按说都是一个时代的东西,不可能 PG 有什么高科技技术 MySQL 开发人员不会啊!
acczefly
2017-11-21 18:18:55 +08:00
一个级别的东西,没必要鼓吹某一个。。。
pg 要真能这么好大家早就全切换 pg 了
crazyneo
2017-11-21 18:21:36 +08:00
@cstj0505 什么,你用 pg 做 olap 不用列存…… copyin 这是客户端的水果糖而已,字节流而已,实际上就是命令行的 copy,mysql 对应的是 csv load data,你先查查这二者的对比再来说……
你抬 pg 我不知道啥基本想法,德哥给 pg 打过多少年广告了,从来没有什么拿 copyin 来作为切入点的。顺便给德哥打个广告,https://github.com/digoal/ 算是国内 pg 业界内资深大佬吧。
cstj0505
2017-11-21 18:36:59 +08:00
@crazyneo 谁告诉你 olap 就必须用列存的。再说列存也不是 pg 原生支持的,pg 的优化器并没有为列存专门做优化,列存相比原生的堆处理能有多大优势。你自己脑补的够多的。

话说 pg 好用我还不能抬 pg 了?什么时候自己的嘴要账在别人身上。至于为什么说 copyin,只是恰好别人跑压测测到这个环节而已。批量导入确实谁都有,在你眼里 copyin 就是命令行的 copy 命令,那是你没玩好,copyin 在实时数据导入,流处理方面好处多了去。

德哥为 pg 做的贡献搞 pg 的谁不知道。
crabRunning
2017-11-21 19:08:22 +08:00
还在用 5.5 各位大佬都用 8 了
cjyang1128
2017-11-21 19:13:58 +08:00
特别不习惯 pg 命令行那些反斜杠开头的命令
notreami
2017-11-21 19:41:27 +08:00
pg 多少钱,我 oracle 买了!!!
est
2017-11-21 19:52:06 +08:00
@cstj0505 OLAP 列存储,100 亿条数据 groupby,70ms 出结果。
frittle
2017-11-21 19:57:17 +08:00
没用过 postgresql 不奇怪,但没听说过就太孤陋寡闻了吧?
owenliang
2017-11-21 20:00:01 +08:00
看过 instgram 用 pg 做图片服务器,前面加一层 http cache。
sfqtsh
2017-11-21 20:00:55 +08:00
pg 的文档写的非常好
cstj0505
2017-11-21 20:15:03 +08:00
@est 列存我知道好,不过 pg 优化器没有专门为列存做优化,我看一些评测下面 pg 下列存的效果不明显。
sunchen
2017-11-21 21:47:32 +08:00
@est 生产环境 postgres + vertica + s3 + kafka 一套看上去很简单的组件, 但是干啥都是美滋滋
yangqi
2017-11-22 01:39:05 +08:00
@cstj0505 看你这么外行,懒得多说。才几亿条数据 mysql 都不能快速搞定就白混那么多年了。
azh7138m
2017-11-22 02:01:59 +08:00
@panpanpan 一般用 navicat 迁移的,都是不建索引的主,性能慢其实也可以理解了:)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/408181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX