MaterializedMySQL引擎 MaterializedMySQL 数据表查询 SELECT 查询从 MaterializedMySQL表有一些细节: 如果在SELECT查询中没有指定 version,则FINAL修饰符被使用,所以只有带有 MAX(version)的行会返回每个主键值。 如果在SELECT查询中没有指定 sign,则默认使用 WHERE sign1。所以被删除的行不是 包含在结果集中。 结果包括列注释,以防MySQL数据库表中存在这些列注释。 索引转换 在云数据库ClickHouse表中,MySQL的 PRIMARY KEY 和 INDEX 子句被转换为 ORDER BY 元组。 云数据库ClickHouse只有一个物理排序,由 order by 条件决定。要创建一个新的物理排序,请使用materialized views。 说明 sign1 的行不会被物理地从表中删除。 级联 UPDATE/DELETE 查询不支持 MaterializedMySQL 引擎。 MaterializedMySQL 受 optimizeoninsert 设置的影响。当MySQL服务器中的一个表发生变化时,数据会合并到 MaterializedMySQL 数据库中相应的表中。 使用示例 MySQL 查询语句: sql mysql>CREATE DATABASE db; mysql>CREATE TABLE db.test (a INTPRIMARYKEY, b INT); mysql>INSERT INTO db.test VALUES (1,11),(2,22); mysql>DELETE FROM db.test WHERE a1; mysql>ALTER TABLE db.test ADDCOLUMN c VARCHAR(16); mysql>UPDATE db.test SET c'Wow!', b222; mysql>SELECT FROM test; text ┌─a─┬───b─┬─c────┐ │ 2 │ 222 │ Wow! │ └───┴─────┴──────┘ 云数据库ClickHouse中的数据库,与MySQL服务器交换数据: 创建的数据库和表: sql CREATE DATABASE mysql ENGINE MaterializedMySQL('localhost:3306','db','user',''); SHOW TABLES FROM mysql; text ┌─name─┐ │ test │ └──────┘ 数据插入之后: sql SELECT FROM mysql.test; text ┌─a─┬──b─┐ │ 1 │ 11 │ │ 2 │ 22 │ └───┴────┘ 删除数据后,添加列并更新: sql SELECT FROM mysql.test; text ┌─a─┬───b─┬─c────┐ │ 2 │ 222 │ Wow! │ └───┴─────┴──────┘