【问题标题】:Create materialized view in Clickhouse times out在 Clickhouse 中创建物化视图超时
【发布时间】:2021-01-09 08:28:32
【问题描述】:

我正在尝试在 Clickhouse db 中创建一个大型的填充物化视图,但它在创建时超时。错误是:

Code: 159, e.displayText() = DB::Exception: Timeout exceeded: elapsed 122.162157893 seconds, maximum: 120 (version 20.4.3.16 (official build)) (version 20.4.3.16 (official build))

为了解决这个问题,我想增加这个超时时间,但问题是,我不知道它是哪一个。我的驱动程序属性中没有超时设置,其值为 120 秒。 我已经将 socket_timeout 设置为 500s。

如何增加120s后触发上述错误的超时时间?

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    好像触发了 lock_acquire_timeout max_execution_time.

    尝试以下任一方法:

    • 不要定义 POPULATE 子句并按块手动填充物化视图
    # define MV without POPULATE
    
    CREATE MATERIALIZED VIEW IF NOT EXISTS mv_name ..
    ENGINE = engine
    AS SELECT ..
    FROM ..;
    
    
    # manually populate it by call of several INSERTs
    
    INSERT INTO mv_name
    SELECT ..
    FROM ..
    WHERE dt_column >= '..' AND dt_column < ''; // <-- restrict the chunk size
    
    
    • 或增加 lock_acquire_timeout max_execution_time-值
    CREATE MATERIALIZED VIEW IF NOT EXISTS mv_name ..
    ENGINE = engine
    AS SELECT ..
    FROM ..
    SETTINGS max_execution_time = 600;
    

    要定义设置为 120 的设置,请使用查询:

    SELECT *
    FROM system.settings
    WHERE value = '120'
    

    【讨论】:

    • SELECT * FROM system.settings 真的很有帮助!原来我不得不增加设置max_execution_time。
    • 不,是接收超时。 lock_acquire_timeout -- 产生死锁超时消息。
    猜你喜欢
    • 1970-01-01
    • 2019-12-25
    • 2021-12-06
    • 2021-08-07
    • 2018-12-28
    • 2021-07-24
    • 2021-10-09
    • 2020-06-25
    • 2021-06-13
    相关资源
    最近更新 更多