测试环境
chubaofs clickhouse 环境 5台32核 188G内存 4块sata 磁盘主机
测试方法
git clone https://github.com/vadimtk/ssb-dbgen.git
cd dbgen
make
./dbgen -s 100 -T c
./dbgen -s 100 -T p
./dbgen -s 100 -T s
./dbgen -s 100 -T l
CREATE TABLE customer
(
CCUSTKEY UInt32,
CNAME String,
CADDRESS String,
CCITY LowCardinality(String),
CNATION LowCardinality(String),
CREGION LowCardinality(String),
CPHONE String,
CMKTSEGMENT LowCardinality(String)
)
ENGINE = MergeTree ORDER BY (CCUSTKEY);
CREATE TABLE lineorder
(
LOORDERKEY UInt32,
LOLINENUMBER UInt8,
LOCUSTKEY UInt32,
LOPARTKEY UInt32,
LOSUPPKEY UInt32,
LOORDERDATE Date,
LOORDERPRIORITY LowCardinality(String),
LOSHIPPRIORITY UInt8,
LOQUANTITY UInt8,
LOEXTENDEDPRICE UInt32,
LOORDTOTALPRICE UInt32,
LODISCOUNT UInt8,
LOREVENUE UInt32,
LOSUPPLYCOST UInt32,
LOTAX UInt8,
LOCOMMITDATE Date,
LOSHIPMODE LowCardinality(String)
)
ENGINE = MergeTree PARTITION BY toYear(LOORDERDATE) ORDER BY (LOORDERDATE, LOORDERKEY);
CREATE TABLE part
(
PPARTKEY UInt32,
PNAME String,
PMFGR LowCardinality(String),
PCATEGORY LowCardinality(String),
PBRAND LowCardinality(String),
PCOLOR LowCardinality(String),
PTYPE LowCardinality(String),
PSIZE UInt8,
PCONTAINER LowCardinality(String)
)
ENGINE = MergeTree ORDER BY PPARTKEY;
CREATE TABLE supplier
(
SSUPPKEY UInt32,
SNAME String,
SADDRESS String,
SCITY LowCardinality(String),
SNATION LowCardinality(String),
SREGION LowCardinality(String),
SPHONE String
)
ENGINE = MergeTree ORDER BY SSUPPKEY;
导入数据
clickhouse-client --format_csv_delimiter="," --query "INSERT INTO customer FORMAT CSV" < customer.tbl
clickhouse-client --format_csv_delimiter="," --query "INSERT INTO part FORMAT CSV" < part.tbl
clickhouse-client --format_csv_delimiter="," --query "INSERT INTO supplier FORMAT CSV" < supplier.tbl
clickhouse-client --format_csv_delimiter="," --query "INSERT INTO lineorder FORMAT CSV" < lineorder.tbl
数据导入后生成大宽表
SET maxmemoryusage = 20000000000;
CREATE TABLE lineorderflat
ENGINE = MergeTree
PARTITION BY toYear(LOORDERDATE)
ORDER BY (LOORDERDATE, LOORDERKEY) AS
SELECT
l.LOORDERKEY AS LOORDERKEY,
l.LOLINENUMBER AS LOLINENUMBER,
l.LOCUSTKEY AS LOCUSTKEY,
l.LOPARTKEY AS LOPARTKEY,
l.LOSUPPKEY AS LOSUPPKEY,
l.LOORDERDATE AS LOORDERDATE,
l.LOORDERPRIORITY AS LOORDERPRIORITY,
l.LOSHIPPRIORITY AS LOSHIPPRIORITY,
l.LOQUANTITY AS LOQUANTITY,
l.LOEXTENDEDPRICE AS LOEXTENDEDPRICE,
l.LOORDTOTALPRICE AS LOORDTOTALPRICE,
l.LODISCOUNT AS LODISCOUNT,
l.LOREVENUE AS LOREVENUE,
l.LOSUPPLYCOST AS LOSUPPLYCOST,
l.LOTAX AS LOTAX,
l.LOCOMMITDATE AS LOCOMMITDATE,
l.LOSHIPMODE AS LOSHIPMODE,
c.CNAME AS CNAME,
c.CADDRESS AS CADDRESS,
c.CCITY AS CCITY,
c.CNATION AS CNATION,
c.CREGION AS CREGION,
c.CPHONE AS CPHONE,
c.CMKTSEGMENT AS CMKTSEGMENT,
s.SNAME AS SNAME,
s.SADDRESS AS SADDRESS,
s.SCITY AS SCITY,
s.SNATION AS SNATION,
s.SREGION AS SREGION,
s.SPHONE AS SPHONE,
p.PNAME AS PNAME,
p.PMFGR AS PMFGR,
p.PCATEGORY AS PCATEGORY,
p.PBRAND AS PBRAND,
p.PCOLOR AS PCOLOR,
p.PTYPE AS PTYPE,
p.PSIZE AS PSIZE,
p.PCONTAINER AS PCONTAINER
FROM lineorder AS l
INNER JOIN customer AS c ON c.CCUSTKEY = l.LOCUSTKEY
INNER JOIN supplier AS s ON s.SSUPPKEY = l.LOSUPPKEY
INNER JOIN part AS p ON p.PPARTKEY = l.LOPARTKEY
数据概况
SELECT
table AS `表名`,
sum(rows) AS `总行数`,
formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 2) AS `压缩率`
FROM system.parts
WHERE database = 'default'
GROUP BY table
┌─表名──────────┬────总行数─┬─原始大小───┬─压缩大小───┬─压缩率─┐
│ supplier │ 200000 │ 11.07 MiB │ 7.53 MiB │ 68.04 │
│ part │ 1400000 │ 34.29 MiB │ 24.08 MiB │ 70.24 │
│ customer │ 3000000 │ 168.83 MiB │ 114.72 MiB │ 67.95 │
│ lineorder │ 600037902 │ 24.03 GiB │ 16.67 GiB │ 69.37 │
│ lineorderflat │ 600037902 │ 97.06 GiB │ 53.17 GiB │ 54.78 │
└───────────────┴───────────┴────────────┴────────────┴────────┘
查询结果比对
SQL | k8s耗时(秒) | 本地 耗时 | 扫描行数 | 返回行数 |
---|---|---|---|---|
SELECT sum(LOEXTENDEDPRICE * LODISCOUNT) AS revenue FROM lineorderflat WHERE (toYear(LOORDERDATE) = 1993) AND ((LODISCOUNT >= 1) AND (LODISCOUNT <= 3)) AND (LOQUANTITY < 25) | 1.359 | 0.224 | 91.01 million | 1 |
SELECT sum(LOEXTENDEDPRICE * LODISCOUNT) AS revenue FROM lineorderflat WHERE (toYYYYMM(LOORDERDATE) = 199401) AND ((LODISCOUNT >= 4) AND (LODISCOUNT <= 6)) AND ((LOQUANTITY >= 26) AND (LOQUANTITY <= 35)) | 0.601 | 0.039 | 7.74 million | 1 |
SELECT sum(LOEXTENDEDPRICE * LODISCOUNT) AS revenue FROM lineorderflat WHERE (toISOWeek(LOORDERDATE) = 6) AND (toYear(LOORDERDATE) = 1994) AND ((LODISCOUNT >= 5) AND (LODISCOUNT <= 7)) AND ((LOQUANTITY >= 26) AND (LOQUANTITY <= 35)) | 0.187 | 0.056 | 1.79 million | 1 |
SELECT sum(LOREVENUE), toYear(LOORDERDATE) AS year, PBRAND FROM lineorderflat WHERE (PCATEGORY = 'MFGR#12') AND (SREGION = 'AMERICA') GROUP BY year, PBRAND ORDER BY year ASC, PBRAND ASC | 3.785 | 1.309 | 600.04 million | 280 |
SELECT sum(LOREVENUE), toYear(LOORDERDATE) AS year, PBRAND FROM lineorderflat WHERE (PBRAND >= 'MFGR#2221') AND (PBRAND <= 'MFGR#2228') AND (SREGION = 'ASIA') GROUP BY year, PBRAND ORDER BY year ASC, PBRAND ASC | 1.17 | 0.984 | 600.04 million | 280 |
SELECT sum(LOREVENUE), toYear(LOORDERDATE) AS year, PBRAND FROM lineorderflat WHERE (PBRAND = 'MFGR#2239') AND (SREGION = 'EUROPE') GROUP BY year, PBRAND ORDER BY year ASC, PBRAND ASC | 0.719 | 0.866 | 600.04 million | 7 |
SELECT CNATION, SNATION, toYear(LOORDERDATE) AS year, sum(LOREVENUE) AS revenue FROM lineorderflat WHERE (CREGION = 'ASIA') AND (SREGION = 'ASIA') AND (year >= 1992) AND (year <= 1997) GROUP BY CNATION, SNATION, year ORDER BY year ASC, revenue DESC | 1.248 | 1.17 | 546.67 million | 150 |
SELECT CCITY, SCITY, toYear(LOORDERDATE) AS year, sum(LOREVENUE) AS revenue FROM lineorderflat WHERE (CNATION = 'UNITED STATES') AND (SNATION = 'UNITED STATES') AND (year >= 1992) AND (year <= 1997) GROUP BY CCITY, SCITY, year ORDER BY year ASC, revenue DESC | 0.96 | 1.05 | 546.67 million | 600 |
SELECT CCITY, SCITY, toYear(LOORDERDATE) AS year, sum(LOREVENUE) AS revenue FROM lineorderflat WHERE ((CCITY = 'UNITED KI1') OR (CCITY = 'UNITED KI5')) AND ((SCITY = 'UNITED KI1') OR (SCITY = 'UNITED KI5')) AND (year >= 1992) AND (year <= 1997) GROUP BY CCITY, SCITY, year ORDER BY year ASC, revenue DESC | 0.778 | 0.874 | 546.67 million | 24 |
SELECT CCITY, SCITY, toYear(LOORDERDATE) AS year, sum(LOREVENUE) AS revenue FROM lineorderflat WHERE ((CCITY = 'UNITED KI1') OR (CCITY = 'UNITED KI5')) AND ((SCITY = 'UNITED KI1') OR (SCITY = 'UNITED KI5')) AND (toYYYYMM(LOORDERDATE) = 199712) GROUP BY CCITY, SCITY, year ORDER BY year ASC, revenue DESC | 0.045 | 0.045 | 7.74 million | 4 |
SELECT toYear(LOORDERDATE) AS year, CNATION, sum(LOREVENUE - LOSUPPLYCOST) AS profit FROM lineorderflat WHERE (CREGION = 'AMERICA') AND (SREGION = 'AMERICA') AND ((PMFGR = 'MFGR#1') OR (PMFGR = 'MFGR#2')) GROUP BY year, CNATION ORDER BY year ASC, CNATION ASC | 2.32 | 1.761 | 600.04 million | 35 |
SELECT toYear(LOORDERDATE) AS year, SNATION, PCATEGORY, sum(LOREVENUE - LOSUPPLYCOST) AS profit FROM lineorderflat WHERE (CREGION = 'AMERICA') AND (SREGION = 'AMERICA') AND ((year = 1997) OR (year = 1998)) AND ((PMFGR = 'MFGR#1') OR (PMFGR = 'MFGR#2')) GROUP BY year, SNATION, PCATEGORY ORDER BY year ASC, SNATION ASC, PCATEGORY ASC | 0.506 | 0.532 | 144.42 million | 100 |
SELECT toYear(LOORDERDATE) AS year, SCITY, PBRAND, sum(LOREVENUE - LOSUPPLYCOST) AS profit FROM lineorderflat WHERE (SNATION = 'UNITED STATES') AND ((year = 1997) OR (year = 1998)) AND (PCATEGORY = 'MFGR#14') GROUP BY year, SCITY, PBRAND ORDER BY year ASC, SCITY ASC, PBRAND ASC | 0.435 | 0.469 | 144.42 million | 800 |
本文由 妖言君 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jan 10, 2021 at 03:09 pm