Performance 如何在ClickHouse中加速大查询?

Performance 如何在ClickHouse中加速大查询?,performance,clickhouse,throughput,Performance,Clickhouse,Throughput,背景: 我在ClickHouse中提交了一个本地查询(不使用缓存),它处理了41443万行,42.80GB。 查询持续了100多秒。 我的ClickHouse实例安装在AWSc5.9xlargeEC2上,带有12Tst1EBS 在此查询过程中,IOPS最高可达500,读取吞吐量最高可达20M/s。 作为比较,st1EBS maxIOPS为500最大吞吐量为500M/s 我的问题是: 500IOPS是否确实限制了我的查询(文件读取)速度?(不要介意缓存)我应该将EBS卷类型更改为gp2还是io1以

背景:

我在ClickHouse中提交了一个本地查询(不使用缓存),它处理了41443万行,42.80GB。 查询持续了100多秒。 我的ClickHouse实例安装在AWS
c5.9xlarge
EC2上,带有
12T
st1
EBS

在此查询过程中,
IOPS
最高可达
500
,读取
吞吐量
最高可达
20M/s
。 作为比较,
st1
EBS max
IOPS
500
最大
吞吐量
500M/s

我的问题是:

  • 500
    IOPS
    是否确实限制了我的查询(文件读取)速度?(不要介意缓存)我应该将EBS卷类型更改为
    gp2
    还是
    io1
    以增加
    IOPS
  • 在相同的
    IOPS
    下,是否有任何设置可以提高
    吞吐量
    ?(如我所见,它实际上离天花板很远) 我试图增加
    “最大块大小”
    一次读取更多文件,但似乎不起作用
  • 如何延长缓存时间?大查询需要几分钟。缓存耗时数秒。但缓存似乎不会持续很长时间
  • 如何使预热栏满足所有要求?请显示sqls
  • 500 IOPS是否限制了我的查询(文件读取)速度

    我是否应该将EBS卷类型更改为gp2或io1以提高IOPS

    在相同的IOPS下,是否有任何设置可以提高吞吐量

    将最大字节数调整为读取

    减少列数(在选择中)

    减少零件数量(在选择中)

    如何延长缓存时间

    最小\u合并\u字节\u使用\u直接\u io=1

    如何使预热栏满足所有要求?请显示sqls

    从T格式Null中选择a、b、c、d

    500 IOPS是否限制了我的查询(文件读取)速度

    我是否应该将EBS卷类型更改为gp2或io1以提高IOPS

    在相同的IOPS下,是否有任何设置可以提高吞吐量

    将最大字节数调整为读取

    减少列数(在选择中)

    减少零件数量(在选择中)

    如何延长缓存时间

    最小\u合并\u字节\u使用\u直接\u io=1

    如何使预热栏满足所有要求?请显示sqls


    从T Format Null中选择a、b、c、d作为参考,我查询的表包含数千个分区(目前为2k)。我发现
    max\u bytes\u to\u read
    默认设置为0,这意味着没有限制。我试图改变它的价值,但没有发现性能上的显著变化。这是否意味着我的查询产生如此低的吞吐量仅仅是因为有太多的部分,并且它不满足
    max_bytes\u to_read
    限制?我可能将
    max_bytes\u to_read
    与另一个参数混淆了。我记得CH读取1MB缓冲区。但您的目标不是吞吐量。是的,2k零件可能是压力超过500IPS极限的原因。部分可能太小,CH执行更多IO操作以读取多个文件而不是一个文件。尝试使用其他分区重建表。作为参考,我查询的表包含数千个分区(目前为2k)。我发现
    max\u bytes\u to\u read
    默认设置为0,这意味着没有限制。我试图改变它的价值,但没有发现性能上的显著变化。这是否意味着我的查询产生如此低的吞吐量仅仅是因为有太多的部分,并且它不满足
    max_bytes\u to_read
    限制?我可能将
    max_bytes\u to_read
    与另一个参数混淆了。我记得CH读取1MB缓冲区。但您的目标不是吞吐量。是的,2k零件可能是压力超过500IPS极限的原因。部分可能太小,CH执行更多IO操作以读取多个文件而不是一个文件。尝试用另一个分区重建表。