如何通过ClickHouse MySQL引擎正确传递MAX_EXECUTION_TIME约束
关于ClickHouse MySQL引擎传递MAX_EXECUTION_TIME约束的问题
当通过ClickHouse的MySQL引擎表执行查询时,若在语句中使用/*+ MAX_EXECUTION_TIME(1000) */提示,MySQL无法识别该约束。需要明确:必须在创建ClickHouse的MySQL引擎表时,通过SETTINGS参数设置MAX_EXECUTION_TIME,才能将超时约束正确传递给MySQL。
原因说明
- 查询语句中的
/*+ MAX_EXECUTION_TIME(1000) */是ClickHouse自身的查询提示,仅用于控制ClickHouse本地的执行超时,不会被转发到后端MySQL服务器。 - 建表时指定的
MAX_EXECUTION_TIME设置,是ClickHouse专门为MySQL引擎表配置的、传递给MySQL的查询超时参数,会被转换为MySQL支持的超时逻辑(对应MySQL的MAX_EXECUTION_TIME优化器提示),从而让MySQL端生效。
正确的建表示例
CREATE TABLE mysql_tables.table1 ( `id` Int32, `status` Int32 ) ENGINE = MySQL('host', 'db', 'table1', 'user', 'password') SETTINGS MAX_EXECUTION_TIME = 1000;
错误的方式(无法传递约束到MySQL)
以下查询中的超时提示仅对ClickHouse本地生效,MySQL无法识别:
SELECT /*+ MAX_EXECUTION_TIME(1000) */ column1, column2 from mysql_tables.table1
内容的提问来源于stack exchange,提问作者Zaoza14
相关产品推荐
相关产品推荐

