百万量级下ClickHouse与MySQL的读操作性能对比测试

这篇博客对比了在相同数据量级下,ClickHouse(MergeTree引擎)与MySQL(MyISAM引擎)在执行单表查询和联表查询上的性能。结果显示,ClickHouse在单表查询上比MySQL快约23倍,联表查询快208倍,显示出在大数据处理上的高效能。测试环境为MacBook Air,数据表结构包括销售和店铺信息表。

本次测试的目的在于看一下ClickHouse和MySQL在同数据量级下对于大表执行复杂读操作SQL的效率,其中MySQL使用MyISAM引擎。

【测试环境】

MacBook Air (13-inch, Mid 2013)
1.3 GHz Intel Core i5
4 GB 1600 MHz DDR3
macOS 10.14.6
ClickHouse 21.6.6
MySQL 8.0.18

【测试数据表结构】
MySQL表
CREATE TABLE `sales_myisam` (
`平台` varchar(255) DEFAULT NULL,
`品类` varchar(255) DEFAULT NULL,
`商品名称` varchar(255) DEFAULT NULL,
`现价` float DEFAULT NULL,
`月销量` int(11) DEFAULT NULL,
`品牌` varchar(255) DEFAULT NULL,
`店铺链接` varchar(255) DEFAULT NULL,
KEY `店铺链接` (`店铺链接`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

CREATE TABLE `shopinfo_myisam` (
`平台` varchar(255) DEFAULT NULL,
`店铺名称` varchar(255) DEFAULT NULL,
`店铺链接` varchar(255) DEFAULT NULL,
`县` varchar(255) DEFAULT NULL,
`省辖市` varchar(255) DEFAULT NULL,
`省` varchar(255) DEFAULT NULL,
`是否农商` varchar(255) DEFAULT NULL,
`是否重复` varchar(255) DEFAULT NULL,
KEY `店铺链接` (`店铺链接`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

ClickHouse表
CREATE TABLE default.sales
(
`平台` String,
`品类` String,
`商品名称` String,
`现价` Float32,
`月销量` Int32,
`品牌` String,
`店铺链接` String
)
ENGINE = MergeTree
ORDER BY `店铺链接`

CREATE TABLE shopinfo (
`平台` String,
`店铺名称` String,
`店铺链接` String,
`县` String,
`省辖市` String,
`省` String,
`是否农商` String,
`是否重复` String
)
ENGINE = MergeTree
ORDER BY `店铺链接`;


【测试数据量级】

sales 2458598行
shopinfo 34922行

【单表查询测试SQL】
select `店铺链接`, count(*) as cnt from sales_myisam group by `店铺链接` order by cnt desc;

【单表测试结果】
MySQL(MyISAM引擎) 3.54s 1.34s 1.35s 1.36s 1.36s
ClickHouse(MergeTree引擎) 0.15s 0.122s 0.176s 0.15s 0.223s

【联表查询测试SQL】
SELECT t2.`平台`, t2.`店铺链接`, t2.`店铺名称`, ROUND(t1.`销售额`/10000, 2) as `销售额(万)`, t2.`是否农商`
FROM (SELECT SUM(`现价`*`月销量`) AS `销售额`, `店铺链接` FROM sales_myisam
GROUP BY `店铺链接`) as t1 INNER JOIN shopinfo_myisam AS t2
ON t1.`店铺链接` = t2.`店铺链接`
ORDER BY t1.`销售额` DESC LIMIT 20;

【联表测试结果】
MySQL(MyISAM引擎)45.02s 9.02s 9.11s 9.01s 9.05s
ClickHouse(MergeTree引擎)0.216s 0.177s 0.195s 0.163s 0.196s

【测试总结】

在百万数据量级下ClickHouse的单表查询和联表查询表现同样优异看不出区别,说明其能力上限还是比较高的。对于具体对比数据来说单表查询比MySQL快23倍,联表查询比MySQL快208倍。如果MySQL使用InnoDB做本次查询操作性能测试则差异更大。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎狐之刃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值