是否可以使用 ClickHouse 查询数百万行

Posted

技术标签:

【中文标题】是否可以使用 ClickHouse 查询数百万行【英文标题】:Is that possible to query millions of row back with ClickHouse 【发布时间】:2019-12-20 05:38:27 【问题描述】:

我知道 ClickHouse 可能不是使用 SQL 获取数百万行(只有几列)的合适数据库,如下所示:

select col1, col2, .., date from table where col0='a1' and date >= 'start_date' and date 'end_date'

但目前我面临这样的情况。有人可以告诉我它的性能吗?

1. Maximize rows queried from one "select" SQL 
2. Any optimization for fast response

提前致谢。

【问题讨论】:

【参考方案1】:

CH 能够每秒返回数百万行。

测试 1 亿行 / 3GB:

CREATE TABLE XX
ENGINE = MergeTree
ORDER BY A AS
SELECT
    number AS A,
    toDate(number % 103) AS B,
    toString(number) AS C,
    number % 1003 AS D
FROM numbers(100000000)

time curl -o t 'http://localhost:8123/?query=select%20A,%20B,%20C,%20D%20from%20XX'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 3115M    0 3115M    0     0   413M      0 --:--:--  0:00:07 --:--:--  404M

real    0m7.840s


time clickhouse-client -q 'select A,B,C,D from XX' > /dev/null
real    0m6.451s

1 百万行/30MB

time curl -o /dev/null 'http://localhost:8123/?query=select%20A,%20B,%20C,%20D%20from%20XX%20prewhere%20B=toDate(1)'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30.2M    0 30.2M    0     0  93.0M      0 --:--:-- --:--:-- --:--:-- 92.7M

real    0m0.329s

time clickhouse-client -q 'select A,B,C,D from XX prewhere B=toDate(1)' > /dev/null

real    0m0.344s

【讨论】:

以上是关于是否可以使用 ClickHouse 查询数百万行的主要内容,如果未能解决你的问题,请参考以下文章

xampp phpmyadmin 可以处理数百万行吗?

如何在 SQL Server 中更新具有数百万行的大表?

mysql中数百万行的基于键的分区

具有数百万行的 Django 表

在包含数百万行和多个过滤器的表上创建哪些索引

优化两个数百万行表之间的内部联接