用了 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 相逢恨晚了。

10709 次点击
所在节点    数据库
112 条回复
sunchen
2017-11-21 14:40:18 +08:00
不了解 postgres 的人可以看看这个博客 https://github.com/digoal/blog, 你就会对 postgres 有相见恨晚的感觉了
wsy2220
2017-11-21 14:40:27 +08:00
搞数据库的不知道 pg?
tyfulcrum
2017-11-21 14:40:42 +08:00
流行程度和好不好没关系,别拿这个来给 MySQL 背书。worse is better。
torbrowserbridge
2017-11-21 14:42:35 +08:00
没听过 pg,鬼才信
tabris17
2017-11-21 14:42:46 +08:00
我也知道 pg 比 mysql 好。但是还是用 mysql。

为什么?

因为 mysql 用的人多,如果有坑,会有人在你之前去趟平。。。
stabc
2017-11-21 14:43:27 +08:00
@cstj0505
所以,你的意思是同样配置同样数据,MYSQL 100 个并行,PG 10 个并行,结果是 MYSQL 几个小时(我们就当超过 2 个小时),PG 只要 7 分钟。
那么我认为你还是忽略了某些很重要的因素,因为单纯数据库的性能不可能差距这么大。
cstj0505
2017-11-21 14:43:32 +08:00
@wsy2220 比别说,听过就算不错了。我旁边十几年的 oracle dba,维护者上百个 oracle 实例,完全没听过。
其他人也都是开始给他们用了才知道的
buliugu
2017-11-21 14:44:34 +08:00
cstj0505
2017-11-21 14:45:06 +08:00
@stabc 除了并行基本上都是对的,mysql,pg 应该最后都是 10 个并行。
picone
2017-11-21 14:45:33 +08:00
@glues #30 这已经是 16 年的文章了。阿里早就放弃开源数据库,NoSQL 或者 Oracle 系了,自己弄了个 OceanBase,而且逐步取代原有的数据库。今年双 11 支付宝完全是跑在 OceanBase 了。
BBCCBB
2017-11-21 14:47:00 +08:00
@liprais 从哪儿得出的结论呢??
picone
2017-11-21 14:48:54 +08:00
MySQL 的配置太多,它默认的配置只是比较保守的配置。
如果真要大批量导入数据,可以试试 disable key 了再导入,飞一般的体验。
cstj0505
2017-11-21 14:50:10 +08:00
@picone 看下面回复,刚才特意问了,不是默认配置。用作生产的不可能是默认配置
picone
2017-11-21 14:55:07 +08:00
@cstj0505 #53 关闭索引导入有试过吗,这个提升很大的
stabc
2017-11-21 14:56:31 +08:00
@cstj0505 不是默认配置不代表是最优配置。你问问他们写入瓶颈在哪里看他们是否清楚就能猜到一二了。

PG 是以“稳固、先进”著称的,如果谁问我选什么数据库我会优先推荐 PG,但是如果单纯问哪个数据库更快我还是会说 MySQL。
cstj0505
2017-11-21 15:03:34 +08:00
@picone 有试过,之前建议他们关闭索引,有改善但不明显。

都有索引(他们索引比较多,貌似 60 还是 100 来个)的情况下,mysql 写入一分钟只有 3 万行 /s,pg 是 387 万行 /s
cstj0505
2017-11-21 15:10:16 +08:00
@stabc 是不是最优配置我就不清楚了,那个环境我也没登上去过。pg 的配置也只是从开发环境拷过去的一个配置,当时应该是按照 8 核 16GB 来配的。

他们这个场景应该是个 olap 的场景,在这方面,pg 的优化器更先进,数据吞吐量更大,查询可以并行执行的特点其实更适合他们
thecon
2017-11-21 15:14:59 +08:00
几亿条数据用 navcat 导入..., 我也是醉了
Hozzz
2017-11-21 16:00:39 +08:00
oracle 不是随便用?被查到最多买几套意思下继续用...
leopardwei
2017-11-21 16:07:21 +08:00
不想说哪个好哪个差,用最熟悉最合适的就好,都有一堆的解决方法

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

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

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

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

© 2021 V2EX