1. 超大数据集查询性能对比:DuckDB vs MySQL实战测评
最近在优化一个数据分析项目时,我遇到了一个典型问题:当单表数据量超过5亿条时,传统关系型数据库的查询性能开始急剧下降。经过多轮技术选型测试,最终将范围缩小到DuckDB和MySQL这两个热门选择。本文将分享完整的对比测试过程,包含从环境搭建到具体查询优化的全流程实录。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 测试环境与数据集准备
2.1 硬件配置与软件版本
测试使用阿里云ecs.g7ne.4xlarge实例:
- 16核vCPU
- 64GB内存
- 500GB ESSD云盘
- Ubuntu 22.04 LTS
对比软件版本:
- MySQL 8.0.33(默认InnoDB引擎)
- DuckDB 0.8.1
2.2 测试数据集生成
使用Python脚本生成模拟电商订单数据,包含以下字段:
python复制import pandas as pd
import numpy as np
def generate_data(rows):
return pd.DataFrame({
'order_id': np.arange(1, rows+1),
'user_id': np.random.randint(1000, 999999, rows),
'product_id': np.random.choice(['A001','B205','C307','D422'], rows),
'amount': np.round(np.random.uniform(10, 1000, rows), 2),
'order_time': pd.date_range('2020-01-01', periods=rows, freq='s'),
'payment_type': np.random.choice(['credit','debit','paypal'], rows),
'region': np.random.choice(['east','west','north','south'], rows)
})
生成5亿条记录的CSV文件(约45GB):
bash复制
