MySQL 引擎如何从 ClickHouse 中的 MySQL 数据库中获取数据?

Posted

技术标签:

【中文标题】MySQL 引擎如何从 ClickHouse 中的 MySQL 数据库中获取数据?【英文标题】:How MySQL engine get data from MySQL database in ClickHouse? 【发布时间】:2020-11-27 12:44:39 【问题描述】:

在我的工作中,事实表存储在 ClickHouse 中,维度表存储在 mysql 数据库中,所以使用 MySQL 数据库引擎连接 ClickHouse 和 MySQL 数据库。从 ClickHouse SQL 运行日志中,我可以发现 ClickHouse 会从 MySQL 数据库中获取所需的数据并进行聚合。 我的问题是 ClickHouse 从 MySQL 数据库获取数据的模式是什么?是正确的 ClickHouse 获取查询中需要的所有数据然后进行聚合或同时执行这两个操作? 如何提高此场景中使用的 SQL 性能?有没有练习技巧?

【问题讨论】:

【参考方案1】:

外部字典加载数据(即来自 Mysql)并将这些数据缓存在 CH 服务器内存中。外部字典 (dictGet) 比 Engine Mysql 中的 SELECT 快很多次。

https://clickhouse.tech/docs/en/sql-reference/dictionaries/external-dictionaries/external-dicts/#dicts-external-dicts

https://clickhouse.tech/docs/en/sql-reference/statements/create/dictionary/

【讨论】:

以上是关于MySQL 引擎如何从 ClickHouse 中的 MySQL 数据库中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

ClickHouse 高级MaterializeMySQL 引擎

篇二啥是ClickHouse的表引擎?

从 mongoDB 迁移到 clickhouse 中的嵌套数据结构

用户标签数据在ClickHouse的存储与使用

大数据ClickHouse进阶(二十):MaterializeMySQL物化引擎深入了解

ClickHouse数据导入