导读:开源数据库系统哪家强?本篇文章请大家看看MySQL vs PostgreSQL的对比。
在本内容中,我们将对比 MySQL 和 PostgreSQL 关系型数据库的性能。我们将运行一系列测试,其中 第一项测试 重点关注 数据写入(ingestion)效率。
首先,我们会测量:
此外,我们还会测量:
值得一提的是,这两种数据库在这些方面的差异 非常大。
最后,我们将评估 数据库的连接池(connection pool),观察它们如何管理插入数据的连接。
在 第二项测试 中,我们将测量 数据读取(retrieval) 的效率。
我使用的是当前最新版本:
为了进行测试,我在 两个数据库 中分别创建了 两张表,具体的 SQL 语句如下。
假设我们有一个 分析系统(analytics backend),用于记录 用户在网站上的行为,例如:
数据库中有两张表:
第一项测试:
我们将使用以下 SQL 语句插入数据,随机生成客户 ID 和操作类型。
第二项测试:
我们将在包含 约 7000 万条记录 的数据库上执行 简单的 JOIN 查询:
如果你有任何关于 改进测试设计 的建议,请告诉我!
在客户端编写方面,我选择使用 Golang,因为:
为了让 MySQL 和 PostgreSQL 的测试尽可能公平,我使用 database/sql 接口 进行数据库操作,而不是直接使用 pgx 驱动(尽管 pgx 可能会降低查询延迟)。
但本次测试的重点是 对比数据库本身的性能,而不是不同的驱动实现。
此外,我确保:
如果你有任何改进建议,请告诉我,或者更好的是,提交一个 Pull Request!
现在,我们开始 第一项测试。
这次测试 总共持续了近 3 小时,但我会将其压缩至 几分钟 展示。
测试过程中,我们会:
你可以在 右上方的图表 看到 每秒查询数(QPS),而 左侧图表 显示的是 从客户端测量的插入延迟。
测试结果:
最大区别:
连接池情况:
临界点:
现在,我们查看 整个测试期间的数据:
在运行 第二项测试 之前,我为 MySQL 额外添加了一些记录,使其与 PostgreSQL 的数据量保持一致。
测试内容:
磁盘读取数据问题:
测试结果:
临界点:
结论:
现在,我们查看 整个测试期间的数据:
MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation): https://www.youtube.com/watch?v=R7jBtnrUmYI
来源:旅途散记(翻译)
本内容是对知名性能评测博主 Anton Putra MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation)[1] 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准
本篇文章为 @ 行动的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。