环境
| DB-version | system | CPU | Men | disk-size | ip |
|---|---|---|---|---|---|
| pgsql-16.6 | centos7 | 8 core | 16G | 100G | 192.168.66.130 |
| mysql-8.0.28 | centos7 | 8 core | 16G | 100G | 192.168.66.160 |
安装数据库
安装mysql:[[shell脚本自动安装MySQL8 v2]]
安装pgsql:[[安装脚本]]
测试OLTP
安装sysbench
# 安装依赖
sudo yum install -y make automake libtool pkgconfig libaio-devel
sudo yum install -y mysql-devel openssl-devel
# 源码安装
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
sudo yum -y install sysbench
# 验证安装
sysbench --version
准备数据集
mysql准备数据:
sysbench oltp_common --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='Huang123.' --mysql-db=test --tables=5 --table-size=25000000 --db-driver=mysql prepare
pgsql准备数据:
sysbench oltp_common --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=123456 --pgsql-db=test --tables=5 --table-size=25000000 --db-driver=pgsql prepare
执行测试
mysql执行测试
只读测试
sysbench oltp_read_only --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='Huang123.' --mysql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=mysql --time=120 run
只写测试
sysbench oltp_write_only --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='Huang123.' --mysql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=mysql --time=120 run
读写混合测试
sysbench oltp_read_write --mysql-host=127.0.0.1 --mysql-port=3306 --mysql-user=root --mysql-password='Huang123.' --mysql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=mysql --time=120 run
pgsql执行测试
只读测试
sysbench oltp_read_only --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=123456 --pgsql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=pgsql --time=120 run
只写测试
sysbench oltp_write_only --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=123456 --pgsql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=pgsql --time=120 run
读写混合测试
sysbench oltp_read_write --pgsql-host=127.0.0.1 --pgsql-port=5432 --pgsql-user=postgres --pgsql-password=123456 --pgsql-db=test --tables=5 --table-size=25000000 --threads=8 --db-driver=pgsql --time=120 run
记录结果
只记录qps作为OLTP性能指标代表
| 测试场景 | MySQL QPS | PostgreSQL QPS | 性能差异 |
|---|---|---|---|
| 只读操作 | 12,192,160 | 11,004,736 | MySQL领先9.7% |
| 只写操作 | 2,664,486 | 3,856,546 | PostgreSQL领先44.7% |
| 读写混合 | 4,830,360 | 4,649,160 | MySQL领先3.9% |
分析结果
- MySQL的优化器在纯读场景下可能更具优势,特别是对简单查询的优化
- PostgreSQL的堆组织表结构在写入操作上可能具有天然优势
- 两种数据库在混合工作负载下表现接近
最后修改时间:2025-10-02 21:51:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




