MySQL表引擎可以与MySQL数据库中的数据表简历映射,并通过SQL向其发起远程查询。

MySQL表引擎可以与物化视图结合,来同步更新MySQL数据库中的数据。

语法:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [TTL expr2],
...
) ENGINE = MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']); 解释:
host:port MySQL服务器的地址和端口
database MySQL中的数据库名
table 表示需要映射的MySQL表名称
user mysql的用户名
password mysql的用户名对应的密码
replace_query 默认为0,对应于MySQL的REPLACE INTO 语法;若为1则会用replace into 代替insert into
on_duplicate_clause 默认为0 对应MySQL的 ON DUPLICATE KEY语法,若需要使用该设置则必须将replace——query 设置为0.

示例:

-- 1. 在MySQL中创建表定义和加入数据:
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.20 |
+-----------+
1 row in set (0.01 sec)
mysql> show create table t_org\G
*************************** 1. row ***************************
Table: t_org
Create Table: CREATE TABLE `t_org` (
`ID` int NOT NULL AUTO_INCREMENT,
`org_code` varchar(8) DEFAULT NULL,
`org_name` varchar(32) DEFAULT NULL,
`lastmodifytime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec) 插入数据:
insert into t_org(org_code,org_name)values('A01','研发部'),('A02','产品部'),('A03','测试部'),('A04','数据部'),('A05','运维部');

2.在clickhouse中对MySQL表引擎建立映射:
Clickhouse> create table t_org(ID UInt32,org_code String,org_name String,LASTMODIFYTIME Datetime)ENGINE=MySQL('192.168.8.110:3306','datasets','t_org','root','oracle'); CREATE TABLE t_org
(
`ID` UInt32,
`org_code` String,
`org_name` String,
`LASTMODIFYTIME` Datetime
)
ENGINE = MySQL('192.168.8.110:3306', 'datasets', 't_org', 'root', 'oracle') Ok. 0 rows in set. Elapsed: 0.002 sec. 注意:
1.MySQL 中的Decimal(p,s) 类型在Clickhouse中的定义的差异
2.clickhouse的数据库引擎 ENGINE = MySQL 这里的MySQL必须要是MySQL
否则报错信息:
Received exception from server (version 20.4.5):
Code: 56. DB::Exception: Received from localhost:9000. DB::Exception: Unknown table engine Mysql. Maybe you meant: ['MySQL']. 查看表的定义:
Clickhouse> desc t_org; DESCRIBE TABLE t_org ┌─name───────────┬─type─────┬─default_type─┬─default_expression─┬─comment─┬─codec_expression─┬─ttl_expression─┐
│ ID │ UInt32 │ │ │ │ │ │
│ org_code │ String │ │ │ │ │ │
│ org_name │ String │ │ │ │ │ │
│ LASTMODIFYTIME │ DateTime │ │ │ │ │ │
└────────────────┴──────────┴──────────────┴────────────────────┴─────────┴──────────────────┴────────────────┘ 4 rows in set. Elapsed: 0.002 sec.
-- 查询clickhouse的定义:
Clickhouse> select * from t_org; SELECT *
FROM t_org ┌─ID─┬─org_code─┬─org_name─┬──────LASTMODIFYTIME─┐
│ 1 │ A01 │ 研发部 │ 2020-07-06 15:13:46 │
│ 2 │ A02 │ 产品部 │ 2020-07-06 15:13:46 │
│ 3 │ A03 │ 测试部 │ 2020-07-06 15:13:46 │
│ 4 │ A04 │ 数据部 │ 2020-07-06 15:13:46 │
│ 5 │ A05 │ 运维部 │ 2020-07-06 15:13:46 │
└────┴──────────┴──────────┴─────────────────────┘ 5 rows in set. Elapsed: 0.007 sec.
在MySQL 中插入新的数据:
insert into t_org(org_code,org_name)values('A06','销售部'),('A07','人力部'); 在clickhouse中查询:
Clickhouse> select * from t_org; SELECT *
FROM t_org ┌─ID─┬─org_code─┬─org_name─┬──────LASTMODIFYTIME─┐
│ 1 │ A01 │ 研发部 │ 2020-07-06 15:13:46 │
│ 2 │ A02 │ 产品部 │ 2020-07-06 15:13:46 │
│ 3 │ A03 │ 测试部 │ 2020-07-06 15:13:46 │
│ 4 │ A04 │ 数据部 │ 2020-07-06 15:13:46 │
│ 5 │ A05 │ 运维部 │ 2020-07-06 15:13:46 │
│ 6 │ A06 │ 销售部 │ 2020-07-06 15:22:28 │
│ 7 │ A07 │ 人力部 │ 2020-07-06 15:22:28 │
└────┴──────────┴──────────┴─────────────────────┘ 7 rows in set. Elapsed: 0.005 sec. 数据已经和MySQL中的数据一样。 在MySQL中更新数据:
mysql> update t_org set org_name='财务部' where org_code='A07';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 mysql> select * from t_org;
+----+----------+-----------+---------------------+
| ID | org_code | org_name | lastmodifytime |
+----+----------+-----------+---------------------+
| 1 | A01 | 研发部 | 2020-07-06 15:13:46 |
| 2 | A02 | 产品部 | 2020-07-06 15:13:46 |
| 3 | A03 | 测试部 | 2020-07-06 15:13:46 |
| 4 | A04 | 数据部 | 2020-07-06 15:13:46 |
| 5 | A05 | 运维部 | 2020-07-06 15:13:46 |
| 6 | A06 | 销售部 | 2020-07-06 15:22:28 |
| 7 | A07 | 财务部 | 2020-07-06 15:24:10 |
+----+----------+-----------+---------------------+
7 rows in set (0.00 sec)
在Clickhouse中查询:
Clickhouse> select * from t_org; SELECT *
FROM t_org ┌─ID─┬─org_code─┬─org_name─┬──────LASTMODIFYTIME─┐
│ 1 │ A01 │ 研发部 │ 2020-07-06 15:13:46 │
│ 2 │ A02 │ 产品部 │ 2020-07-06 15:13:46 │
│ 3 │ A03 │ 测试部 │ 2020-07-06 15:13:46 │
│ 4 │ A04 │ 数据部 │ 2020-07-06 15:13:46 │
│ 5 │ A05 │ 运维部 │ 2020-07-06 15:13:46 │
│ 6 │ A06 │ 销售部 │ 2020-07-06 15:22:28 │
│ 7 │ A07 │ 财务部 │ 2020-07-06 15:24:10 │
└────┴──────────┴──────────┴─────────────────────┘ 7 rows in set. Elapsed: 0.003 sec.
通过clickhouse查询远程的数据 可以看到数据一样发生了变化。 ---delete 操作:
mysql> delete from t_org where org_code='A07';
Query OK, 1 row affected (0.00 sec) mysql> select * from t_org where org_code='A07';
Empty set (0.00 sec) Clickhouse> select * from t_org; SELECT *
FROM t_org ┌─ID─┬─org_code─┬─org_name─┬──────LASTMODIFYTIME─┐
│ 1 │ A01 │ 研发部 │ 2020-07-06 15:13:46 │
│ 2 │ A02 │ 产品部 │ 2020-07-06 15:13:46 │
│ 3 │ A03 │ 测试部 │ 2020-07-06 15:13:46 │
│ 4 │ A04 │ 数据部 │ 2020-07-06 15:13:46 │
│ 5 │ A05 │ 运维部 │ 2020-07-06 15:13:46 │
│ 6 │ A06 │ 销售部 │ 2020-07-06 15:22:28 │
└────┴──────────┴──────────┴─────────────────────┘ 6 rows in set. Elapsed: 0.004 sec. --- 使用雾化视图: Clickhouse> create materialized view mv_t_org engine=MergeTree() order by ID as select * from t_org; CREATE MATERIALIZED VIEW mv_t_org
ENGINE = MergeTree()
ORDER BY ID AS
SELECT *
FROM t_org Ok. 0 rows in set. Elapsed: 0.004 sec.

结论:ClickHouse暂时不支持通过ClickHouse 的MySQL引擎表更新和删除操作,他们之间的关系如下:

ClickHouse的物化视图及MySQL表引擎的更多相关文章

  1. mysql表引擎myisam改为innodb

    1.进入数据库 2.SELECT  CONCAT('ALTER TABLE `', table_name, '` ENGINE=InnoDB;') AS sql_statements FROM    ...

  2. Mysql表引擎的切换

    转换MYSQL表的引擎 1.方法一:Alter table 将1个表的引擎修改为另一个引擎最简单的方法是使用Alter table语句. 下面的语句将myTable的引擎修改为InnoDB mysql ...

  3. mysql 视图 安全性( mysql 表能读,但是视图不能读问题 )

    安全性: 有两个选项 Definer:定义者 , 定义者有什么权限 ,访问视图的人就有什么权限 Invoker: 调用者  ,根据调用这个视图的当前用户来决定 有什么权限 采坑: 项目中有个复杂查询. ...

  4. ClickHouse性能优化?试试物化视图

    一.前言 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS):目前我们使用CH作为实时数仓用于统计分析,在做性能优化的时候使用了 物化视图 这一特性作为优化手段,本文主 ...

  5. clickhouse物化视图

    今天来简单介绍一下clickhouse的物化视图 物化视图支持表引擎,数据保存形式由它的表引擎决定,创建物化视图的完整语法如下: create materialized view mv_log eng ...

  6. MySQL进阶实战6,缓存表、视图、计数器表

    一.缓存表和汇总表 有时提升性能最好的方法是在同一张表中保存衍生的冗余数据,有时候还需要创建一张完全独立的汇总表或缓存表. 缓存表用来存储那些获取很简单,但速度较慢的数据: 汇总表用来保存使用grou ...

  7. Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

    摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 ...

  8. Oracle之物化视图

    来源于:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于 ...

  9. 《oracle每天一练》Oracle之物化视图

    相关帖子思考和跟踪 本文转自Ronger 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实 ...

  10. 物化视图刷新慢--有可能是mv log被多个mv使用造成的

    同事说物化视图刷新慢,经检生产环境,发现部分物化视图刷新慢的原因是:由于同一个物化视图日志(mv log)被多个物化视图(mv)使用,不同的物化视图(mv)使用不同的刷新间隔,导致物化视图日志(mv ...

随机推荐

  1. blazor优雅的方式导入组件相关的js脚本

    基本的组件导入方式为: 1 await JsRuntime.InvokeVoidAsync("import", $"XXXXX.js"); 优雅的组件导入方式: ...

  2. PyTorch的安装与使用

    技术背景 PyTorch是一个非常常用的AI框架,主要归功于其简单易用的特点,深受广大科研人员的喜爱.在前面的一篇文章中我们介绍过制作PyTorch的Singularity镜像的方法,这里我们单独抽出 ...

  3. 显示器AVG、DVI、HDMI、DisplayPort、Type-C、雷电接口

    在近十年的发展,显示设备的接口发生了巨大的改变.以前使用比较多的是蓝色VGA接口,接著出现了白色的DVI接口,当遇到不同接口时,还得买转接头进行转接.后来,又有了HDMI等接口,现在则出现DP和USB ...

  4. Linux系统中如何部署php

    1. 在线安装 Apache 服务器 ubuntu 可通过"apt"等命令在线安装,centos用yum. # ubuntu sudo apt-get install apache ...

  5. ContextCapture-硬件配置推荐

    ContextCapture倾斜摄影的空三计算.三维建模应用.非常耗费硬件资源,适当调整硬件配置,可以显著提高模型处理时间. 硬件常见问题 随着倾斜摄影建模算法成熟,应用越来越广泛,数据量越来越大,需 ...

  6. vscode开发uniapp

    VS Code 对 TS 类型支持友好,前端开发者主流的编辑器 HbuilderX 对 TS 类型支持暂不完善,期待官方完善 工作区禁用 Vetur 插件(Vue2 插件和 Vue3 插件冲突) 工作 ...

  7. Linux环境下:程序的链接, 装载和库[可执行文件的装载]

    现代操作系统如何装载可执行文件? 给进程分配独立的虚拟地址空间 建立虚拟地址空间和可执行文件的映射关系 把CPU指令寄存器设置成可执行文件的入口地址,启动执行 可执行文件在装载的过程中实际上是映射的虚 ...

  8. OAI SDR LTE 基站部署

    目录 文章目录 目录 硬件设备要求 物料购买 部署架构图 安装 LTE/EPC 前期准备 运维相关 操作系统要求 内核要求 CPU Frequency scaling,将 CPU 频率打满 eNode ...

  9. 组合数学:Burnside引理和Polya定理解决染色置换问题

    例题 给3x3的格子上色,4种颜色,可以重复.排除旋转后相同的情况,请问有多少种不同的上色方法? 解答 设格子编号如下: | 1 | 2 | 3 | | 4 | 5 | 6 | | 7 | 8 | 9 ...

  10. Vue Vue-Router params 传参 为空 path定义参数 参数 param is not repeatable

    我在Vue-Router4.0.3版本上出现这个问题 因为官方 在2022年8月22日时废除了未定义的传参方式,所以必须使用定义的params. 解决办法: 在配置路由时:path路径上带上传值的ke ...