【问题标题】:How can I improve ClickHouse server's startup time?如何提高 ClickHouse 服务器的启动时间?
【发布时间】:2019-03-26 09:41:45
【问题描述】:

我正在评估 ClickHouse 在项目中的潜在用途的性能。到目前为止,写入性能一直令人鼓舞,但是当我运行测试并且不得不重新启动服务器几次时,我注意到一个可能成为硬性阻碍的问题:服务器启动时间在波动,并且大部分时间时代非常高。

我的评估服务器包含 26 个数据库,包含大约 540 亿条记录,占用了 697.32 GB 的磁盘空间。

有了这么多数据,我的启动时间从低至 7 分 35 秒缩短到近 3 小时。

这正常吗?可以通过一些更高级的配置来解决吗?我做错了什么吗?因为,就目前而言,如此长的启动时间是个大问题。

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    启动时间慢的主要原因是需要加载大量的元数据,这与数据文件的数量呈正相关。为了增加启动时间,您需要减少文件数量或获取更多内存以保留所有 dentry 和 inode 缓存。

    我的评估服务器包含 26 个数据库,包含大约 540 亿条记录,占用了 697.32 GB 的磁盘空间。

    我建议如下:

    1. 尝试以更粗略的方式调整当前数据分区方案
    2. 使用OPTIMIZE TABLE <table> FINAL压缩所有数据文件
    3. 将数据磁盘升级为 SSD 或高效 RAID,或使用 btrfs 等文件系统将元数据单独存储在快速存储上。

    【讨论】:

    • 架构已经尽可能小了。如果这将投入生产,整个事情会更加复杂,并且会保存更多的数据。使用 OPTIMIZE:“虽然您可以使用 OPTIMIZE 查询运行计划外的合并,但不要指望使用它,因为 OPTIMIZE 查询会读取和写入大量数据。” (来自 ClickHouse 官方文档clickhouse.yandex/docs/en/operations/table_engines/…)。最后,升级到更快的磁盘不是解决方案。 InfluxDB中包含相同数据的服务器最多1s启动。
    • 那么就没有什么可做的了。 github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/… 。 ClickHouse 在启动时会为每个数据部分读取多个文件,这些都是对底层磁盘的随机读取。而且由于启动速度不是最重要的,我看不到在不久的将来优化这个过程的潜在努力。
    猜你喜欢
    • 2016-05-19
    • 1970-01-01
    • 2013-12-19
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多