性能比拼: MySQL vs PostgreSQL
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
本内容是对知名性能评测博主 Anton Putra MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation)[1] 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 MySQL vs PostgreSQL 数据库性能对比在本内容中,我们将对比 MySQL 和 PostgreSQL 关系型数据库的性能。我们将运行一系列测试,其中 第一项测试 重点关注 数据写入(ingestion)效率。 首先,我们会测量:
此外,我们还会测量:
值得一提的是,这两种数据库在这些方面的差异 非常大。 最后,我们将评估 数据库的连接池(connection pool),观察它们如何管理插入数据的连接。 在 第二项测试 中,我们将测量 数据读取(retrieval) 的效率。 我使用的是当前最新版本:
测试设计为了进行测试,我在 两个数据库 中分别创建了 两张表,具体的 SQL 语句如下。 假设我们有一个 分析系统(analytics backend),用于记录 用户在网站上的行为,例如:
数据库中有两张表:
第一项测试: 第二项测试:
如果你有任何关于 改进测试设计 的建议,请告诉我! 代码概览在客户端编写方面,我选择使用 Golang,因为:
为了让 MySQL 和 PostgreSQL 的测试尽可能公平,我使用 database/sql 接口 进行数据库操作,而不是直接使用 pgx 驱动(尽管 pgx 可能会降低查询延迟)。 此外,我确保:
如果你有任何改进建议,请告诉我,或者更好的是,提交一个 Pull Request! 第一项测试:数据写入现在,我们开始 第一项测试。 这次测试 总共持续了近 3 小时,但我会将其压缩至 几分钟 展示。
你可以在 右上方的图表 看到 每秒查询数(QPS),而 左侧图表 显示的是 从客户端测量的插入延迟。 测试结果:
最大区别:
连接池情况:
临界点:
第一项测试:数据分析现在,我们查看 整个测试期间的数据:
第二项测试:数据读取在运行 第二项测试 之前,我为 MySQL 额外添加了一些记录,使其与 PostgreSQL 的数据量保持一致。 测试内容:
磁盘读取数据问题:
测试结果:
临界点:
结论:
第二项测试:数据分析现在,我们查看 整个测试期间的数据:
MySQL vs PostgreSQL Performance Benchmark (Latency - Throughput - Saturation): 阅读原文:原文链接 该文章在 2025/4/9 12:01:24 编辑过 |
关键字查询
相关文章
正在查询... |