百万量级下ClickHouse与MySQL的读操作性能对比测试
本次测试的目的在于看一下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做本次查询操作性能测试则差异更大。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
