博客
关于我
clickhouse mysql引擎 和 MaterializedMySQL引擎的区别
阅读量:498 次
发布时间:2019-03-07

本文共 1484 字,大约阅读时间需要 4 分钟。

MySQL引擎

MySQL引擎用于将远程MySQL服务器中的表映射到ClickHouse中,允许在ClickHouse与MySQL之间进行数据交换。通过MySQL引擎,可以执行SELECT和INSERT查询,将远程表的数据同步到ClickHouse。MySQL引擎会将查询转换为MySQL语法发送到服务器,您可以执行SHOW TABLES、SHOW CREATE TABLE等操作。

不过,MySQL引擎不支持以下操作:

  • RENAME
  • CREATE TABLE
  • ALTER

Materialized MySQL引擎(实验性功能)

Materialized MySQL引擎用于创建ClickHouse数据库,包含MySQL中所有表及数据。它作为MySQL的副本工作,读取binlog并执行DDL和DML查询。

MySQL服务器端配置

为了确保Materialized MySQL引擎正常工作,需设置以下MySQL配置:

  • default_authentication_plugin = mysql_native_password
  • gtid_mode = on
  • enforce_gtid_consistency = on

虚拟列

在使用Materialized MySQL引擎时,推荐使用以下虚拟列:

  • _version:类型UInt64,用于同步版本控制。
  • _sign:类型Int8,可能值为:
    • 1:表示行未被删除。
    • -1:表示行已被删除。

兼容性限制

在使用Materialized MySQL引擎前,请注意以下限制:

  • MySQL表必须包含PRIMARY KEY。
  • ENUM字段值超出签名范围的表无法复制。
  • Materialized MySQL引擎不支持直接执行INSERT、DELETE和UPDATE查询,但支持通过binlog复制数据。

DDL查询

MySQL的DDL查询会转换为ClickHouse的DDL语法(如ALTER、CREATE、DROP、RENAME)。如果ClickHouse无法解析某个DDL查询,将忽略该操作。

数据复制

Materialized MySQL引擎支持以下数据复制功能:

  • INSERT查询转换为INSERT,携带_sign=1。
  • DELETE查询转换为INSERT,携带_sign=-1。
  • UPDATE查询转换为INSERT,携带_sign=-1(删除旧值)和_sign=1(插入新值)。

查询Materialized MySQL表

SELECT查询Materialized MySQL表时需注意以下细节:

  • 如果未指定_version,默认使用FINAL修饰符,只有带有MAX(_version)的行才会被选中。
  • 如果未指定_sign,默认使用WHERE _sign=1,即未删除的行不会包含在结果集中。
  • 结果集中会包含列的注释信息。

Index Conversion

MySQL的PRIMARY KEY和INDEX子句会转换为ClickHouse的ORDER BY元组。由于ClickHouse只有一个物理顺序,若需创建新顺序,请使用materialized views。

注意事项

  • 带有_sign=-1的行不会从表中物理删除。
  • Materialized MySQL引擎不支持级联UPDATE/DELETE查询。
  • 禁止对数据库和表进行手工操作。
  • 物理删除操作会破坏复制。
  • Materialized MySQL引擎受optimize_on_insert设置的影响,MySQL表结构变化会同步到Materialized MySQL表中。

转载地址:http://wqwcz.baihongyu.com/

你可能感兴趣的文章
paip.spring3 mvc servlet的配置以及使用最佳实践
查看>>
Palindrome Number leetcode java
查看>>
Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)
查看>>
Palo Alto Networks Expedition 远程命令执行漏洞(CVE-2024-9463)
查看>>
Palo Alto Networks PAN-OS身份认证绕过导致RCE漏洞复现(CVE-2024-0012)
查看>>
Panalog 日志审计系统 libres_syn_delete.php 前台RCE漏洞复现
查看>>
Springboot中@SuppressWarnings注解详细解析
查看>>
Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现
查看>>
Panalog 日志审计系统 sprog_upstatus.php SQL 注入漏洞复现(XVE-2024-5232)
查看>>
Panalog 日志审计系统 前台RCE漏洞复现
查看>>
PANDA VALUE_COUNTS包含GROUP BY之前的所有值
查看>>
pandas - 如何将所有列从对象转换为浮点类型
查看>>
Pandas - 按列分组并将数据转换为 numpy 数组
查看>>
Pandas - 按日期对日内时间序列进行分组
查看>>
Pandas - 有条件的删除重复项
查看>>
pandas -按连续日期时间段分组
查看>>
pandas -更改重新采样的时间序列的开始和结束日期
查看>>
SpringBoot+Vue+Redis前后端分离家具商城平台系统(源码+论文初稿直接运行《精品毕设》)15主要设计:用户登录、注册、商城分类、商品浏览、查看、购物车、订单、支付、以及后台的管理
查看>>
pandas :to_excel() float_format
查看>>
pandas :从数据透视表中的另一列中减去一列
查看>>