ClickHouse MySQL引擎

本文介绍ClickHouse中MySQL库引擎和表引擎的使用方法,包括创建、查询、更新等操作细节,并对比了两种引擎的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ClickHouse关于mysql有库引擎跟表引擎.

1 MySQL库引擎

直接映射mysql的数据库

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')

随便找了一个测试的库
在这里插入图片描述
创建MySQL引擎数据库

 create database mysqlDB engine = MySQL('node03:3306','test','root','123456');
 
 show tables from mysqlDB;
┌─name───────────┐
│ sqooptest      │
│ sqooptest_copy │
│ test           │
└────────────────┘

select * from test;
┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
└────┴──────────┘

insert into test values(4,'zhaoliu');

node01.hadoop.com :) select * from test;

┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
│  4 │ zhaoliu  │
└────┴──────────┘

插入后mysql表:
在这里插入图片描述
MySQL库引擎中,所有的表都是MySQL表引擎,通过库引擎的方式创建的表无法进行更新/删除操作,也无法进行表的DDL操作.
表允许删除(drop)与卸载(detach),但是不会删除mysql中的表,并且删除或者卸载之后,允许通过装载(attach)再将表装载回来.

2 MySQL表引擎:

上方中的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:数据库
table:表名
user/password:账号密码
replace_query:默认0 设置为1所有insert into' 语句变更为replace into` 语句
on_duplicate_clause:默认关闭,对应于on duplicate key 后面的语句,设置值的话replace_query必须设置为0

基于上方的test表,继续测试:
删除1创建的MySQL库引擎:

drop database mysqlDB;

创建ClickHouse中的test表:

create table default.test (id Int16,name String)
engine =MySQL('node03:3306','test','test','root','123456');

select * from default.test;
┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
│  4 │ zhaoliu  │
└────┴──────────┘

同样也支持插入语句,下面测试replace_query
mysql中的test表 id是主键:

drop table default.test;
create table default.test (id Int16,name String)
engine =MySQL('node03:3306','test','test','root','123456',1);

insert into default.test values(4,'xiaoshiyi');
select * from default.test;
┌─id─┬─name──────┐
│  1 │ zhangsan  │
│  2 │ wangwu    │
│  3 │ lisi      │
│  4 │ xiaoshiyi │
└────┴───────────┘

以上,字段已经根据replace语句更新
on_duplicate_clause:就是on duplicate key 后面的语句

drop table default.test;
create table default.test (id Int16,name String)
engine =MySQL('node03:3306','test','test','root','123456',0,
'update name = values(name)');

 select * from default.test;
┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
│  4 │ zhaoliu  │
└────┴──────────┘
insert into default.test values(4,'') ;
┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
│  4 │          │
└────┴──────────┘

创建MySQL表引擎时,指定的字段可以是一部分字段中,但必须要与mysql表总的字段名一致,至于字段的类型请参考

mysql typeCH type
UNSIGNED TINYINTUInt8
TINYINTInt8
UNSIGNED SMALLINTUInt16
SMALLINTInt16
UNSIGNED INT, UNSIGNED MEDIUMINTUInt32
INT, MEDIUMINTInt32
UNSIGNED BIGINTUInt64
BIGINTInt64
FLOATFloat32
DOUBLEFloat64
DATEDate
DATETIME, TIMESTAMPDateTime
BINARYFixedString
varchar,charString

3 mysql表函数

用于直接从mysql中查询数据:

select * from mysql('node03:3306','test','test','root','123456');

┌─id─┬─name─────┐
│  1 │ zhangsan │
│  2 │ wangwu   │
│  3 │ lisi     │
│  4 │          │
└────┴──────────┘


### 回答1: MySQL 数据库管理系统支持多种数据库引擎。每种数据库引擎都有不同的特点,适用于不同的用例。 常见的 MySQL 数据库引擎包括: - MyISAM:MyISAM 是 MySQL 的默认引擎,在性能和数据完整性方面表现良好。它支持全文索引,但不支持事务和行级锁定。 - InnoDB:InnoDB 是一种支持事务处理和行级锁定的引擎。它通常被用于需要高可用性和数据完整性的应用程序。 - Memory:Memory 引擎将数据存储在内存中,速度非常快,但数据不能持久化。它通常用于临时存储数据或缓存数据。 - CSV:CSV 引擎允许将数据存储在 CSV 格式的文件中,并提供对 CSV 文件的简单查询支持。 - Archive:Archive 引擎提供了一种高压缩比的方式来存储大量只读数据。它不支持索引,因此只能用于存储历史数据或进行批量加载。 在选择 MySQL 数据库引擎时,应考虑应用程序的性能、可用性、数据完整性以及其他特定需求,并根据这些因素来决定最后使用哪 ### 回答2: MySQL引擎是用于存储和管理数据库数据的关键组件。MySQL提供了多种不同的引擎,每个引擎都具有其独特的特点和优势。下面是一些常见的MySQL引擎及其区别: 1. MyISAM引擎:这是MySQL最早的引擎,它使用表级锁定机制,适用于读取频率高于写入频率的场景。但是,它不支持事务处理和数据完整性的约束,因此在需要ACID事务支持的应用中不适用。 2. InnoDB引擎:这是MySQL默认的事务性存储引擎,它支持ACID事务、行级锁定和外键约束等重要特性。它适用于需要高可靠性和数据完整性的应用。InnoDB引擎通过自动将数据缓存到内存中来提高性能,并具有崩溃恢复功能,可以在数据库崩溃后恢复数据。 3. Memory引擎:也称为Heap引擎,它将表中的数据存储在内存中,因此读取速度非常快。然而,由于数据存储在内存中,所以在数据库崩溃时数据会丢失。Memory引擎适用于临时数据、缓存和临时表等应用场景。 4. NDB Cluster引擎:也称为MySQL Cluster引擎,它通过将数据分布在多个节点上来提供高可用性和性能。NDB Cluster引擎适合于需要高并发访问和高可用性的大规模应用,如电信、金融和电子商务等领域。 5. Archive引擎:这是一种非事务性存储引擎,适用于归档和大量读取少量写入的应用。它以高度压缩的方式存储数据,节省了存储空间。Archive引擎不支持索引,只能进行全表扫描操作。 根据应用的需求和特点,选择合适的MySQL引擎可以提供更好的性能、可用性和数据完整性。 ### 回答3: MySQL是一种关系型数据库管理系统,它有多个可用的引擎来处理和存储数据。在MySQL中,常用的引擎包括InnoDB、MyISAM、MEMORY、CSV等。 首先,InnoDB是MySQL的默认引擎,并且在性能和功能上提供了许多优势。它支持事务处理、行级锁和外键约束等特性,适合于需要高并发读写的应用。InnoDB还提供了自动崩溃恢复机制,可以在数据库发生崩溃时保证数据的一致性。 其次,MyISAM是另一个常用的引擎,适用于一些读取频率高但写入频率较低的应用。它的优点是速度快,支持全文索引和空间索引,但不支持事务和行级锁定,也不具备自动崩溃恢复的功能。 另外,MEMORY引擎适用于数据量较小的表,将数据存储在内存中,读写速度非常快。然而,一旦MySQL服务器关闭,数据将丢失,不具备持久性。 此外,CSV引擎用于处理以逗号分隔的值(CSV)文件,它允许将CSV文件视为表,并进行查询和修改。但是,与其他引擎相比,CSV引擎的功能相对有限。 总之,不同的引擎适用于不同的应用场景。选择适合的引擎可以提高数据库的性能和效率,并满足应用的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值