clickhouse mysql引擎 和 MaterializedMySQL引擎的区别

1.mysql引擎

MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行数据交换
MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此您可以执行诸如SHOW TABLES或SHOW CREATE TABLE之类的操作。

但不能对其执行以下操作:

RENAME
CREATE TABLE
ALTER

2.MaterializedMySQL引擎(官网说 这个功能是实验性的)

创建ClickHouse数据库,包含MySQL中所有的表,以及这些表中的所有数据。ClickHouse服务器作为MySQL副本工作。它读取binlog并执行DDL和DML查询。

MySQL服务器端配置

为了MaterializeMySQL正确的工作,有一些强制性的MySQL侧配置设置应该设置:

default_authentication_plugin = mysql_native_password,因为MaterializeMySQL只能使用此方法授权。
gtid_mode = on,因为要提供正确的MaterializeMySQL复制,基于GTID的日志记录是必须的。注意,在打开这个模式On时,你还应该指定enforce_gtid_consistency = on。

虚拟列
当使用MaterializeMySQL数据库引擎时,ReplacingMergeTree表与虚拟的_sign和_version列一起使用。

_version — 同步版本。 类型UInt64.
_sign — 删除标记。类型 Int8. Possible values:
1 — 行不会删除,
-1 — 行被删除。

兼容性限制¶
除了数据类型的限制外,与MySQL数据库相比,还存在一些限制,在实现复制之前应先解决这些限制:

MySQL中的每个表都应该包含PRIMARY KEY

对于包含ENUM字段值超出范围(在ENUM签名中指定)的行的表,复制将不起作用。

DDL查询
MySQL DDL查询转换为相应的ClickHouse DDL查询(ALTER, CREATE, DROP, RENAME)。如果ClickHouse无法解析某个DDL查询,则该查询将被忽略。

Data Replication
MaterializeMySQL不支持直接INSERT, DELETE和UPDATE查询. 但是,它们是在数据复制方面支持的:

MySQL的INSERT查询转换为INSERT并携带_sign=1.

MySQL的DELETE查询转换为INSERT并携带_sign=-1.

MySQL的UPDATE查询转换为INSERT并携带_sign=-1, INSERT和_sign=1.

查询MaterializeMySQL表
SELECT查询MaterializeMySQL表有一些细节:

如果_version在SELECT中没有指定,则使用FINAL修饰符。所以只有带有MAX(_version)的行才会被选中。

如果_sign在SELECT中没有指定,则默认使用WHERE _sign=1。因此,删除的行不会包含在结果集中。

结果包括列中的列注释,因为它们存在于SQL数据库表中。

Index Conversion
MySQL的PRIMARY KEY和INDEX子句在ClickHouse表中转换为ORDER BY元组。

ClickHouse只有一个物理顺序,由ORDER BY子句决定。要创建一个新的物理顺序,使用materialized views。

Notes

带有_sign=-1的行不会从表中物理删除。
MaterializeMySQL引擎不支持级联UPDATE/DELETE查询。
复制很容易被破坏。
禁止对数据库和表进行手工操作。
MaterializeMySQL受optimize_on_insert设置的影响。当MySQL服务器中的表发生变化时,数据会合并到MaterializeMySQL数据库中相应的表中。

参考:
https://clickhouse.com/docs/zh/engines/database-engines/materialize-mysql/
https://clickhouse.com/docs/zh/engines/database-engines/mysql/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值