作者 | 叶正盛
随着数据量爆炸性的增长,数据库类产品创新层出不穷,为了更好的做技术选型参考,笔者对国内主流 8 种数据库进行了 TPC-H(数据分析)性能评测,被测试的数据库包括:MySQL、PostgreSQL、Oracle、达梦、ClickHouse、Doris、Starrocks、DuckDB。
测试方法
TPC-H:国际数据库标准测试组织 TPC 推出的面向决策支持系统的数据库方法,主要用于数据分析场景性能评测,TPC-H 总共需要运行 22 条数据分析型 SQL。本次测试属于 TPC-H 自由测试,仅测试查询 SQL,没有执行更新和事务。
数据集:TPC-H v3.0.1 测试数据集,200GB(非报告标准 size)。
计时方法:统计每条 SQL 执行时间,全部累加。设置 SQL 最长执行时间为 300 秒 (5 分钟),如果执行出错或者超时,则本条 SQL 时间按 600 秒计算。
测试硬件
为了公平起见,本次 TPC-H 测试使用了完全相同的硬件,所有产品都是单机部署,重点是测试各个产品的单机处理能力。
1 台阿里云 ECSi4r.4xlarge
处理器:16 核 2.7 GHz 主频的 Intel () Xeon () 可扩展处理器(Ice Lake ),
内存:128GB
硬盘:1 块本地 Nvme SSD,空间 894GB
操作系统:CentOS7.9
测试结论
接下来详细描述 TPC-H 测试方法和 8 种数据库的测试成绩
TPC-H 数据模型简介
TPC-H 主要模拟供应商和采购商之间的订单交易,模型总共 8 张表
region:区域表,固定 5 条记录
nation:国家表,固定 25 条记录
supplier:供应商表,数据量因子 *10000 条记录
customer:客户表,数据量因子 *150000 条记录
part:商品表,数据量因子 *200000 条记录
partsupp:供应商物件表:数据量因子 *800000 条记录
orders:订单表,数据量因子 *1500000 条记录
lineitem:订单明细表,数据量因子 *6000000 条记录(最大的表,占总数据率 70%)
region:区域表,固定 5 条记录
nation:国家表,固定 25 条记录
supplier:供应商表,数据量因子 *10000 条记录
customer:客户表,数据量因子 *150000 条记录
part:商品表,数据量因子 *200000 条记录
partsupp:供应商物件表:数据量因子 *800000 条记录
orders:订单表,数据量因子 *1500000 条记录
lineitem:订单明细表,数据量因子 *6000000 条记录(最大的表,占总数据率 70%)
TPC-H 测试的数据量大小可以任意指定,本次测试采用了 200GB 的规模,最大的 lineitem 表数据量约 12 亿条 (200*6000000)。
模型建表
以下是 MySQL 语法参考,其他数据库可以根据语法修改