数据库引擎
官网说明
https://clickhouse.com/docs/en/engines/database-engines/atomic
Atomic(默认)
创建
CREATE DATABASE test [ENGINE = Atomic];
表细节
数据库中的所有表Atomic都有持久的UUID,并将数据存储在目录 中/clickhouse_path/store/xxx/xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy/,其中xxxyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy是表的 UUID。通常,UUID是自动生成的,但用户也可以在创建表时以同样的方式显式指定UUID(不推荐)。
CREATE TABLE name UUID '28f1c61c-2970-457a-bffe-454156ddcfef' (n UInt64) ENGINE = ...;
show create database helloworld;
Lazy
仅在上次访问后几秒钟将表保留在 RAM 中expiration_time_in_seconds。只能与日志表一起使用。**它针对存储许多小型日志表进行了优化**,这些表的访问之间有很长的时间间隔。
创建
CREATE DATABASE testlazy ENGINE = Lazy(expiration_time_in_seconds);
Replicated
该引擎基于Atomic引擎。它支持通过将 DDL 日志写入 ZooKeeper 并在给定数据库的所有副本上执行元数据复制。一台 ClickHouse 服务器可以同时运行和更新多个复制数据库。但同一复制数据库不能有多个副本。
CREATE DATABASE testdb ENGINE = Replicated('zoo_path', 'shard_name', 'replica_name') [SETTINGS ...]
PostgreSQL
允许连接到远程PostgreSQL服务器上的数据库。支持读写操作(SELECT和INSERT查询)以在 ClickHouse 和 PostgreSQL 之间交换数据。
SHOW TABLES借助查询,可以从远程 PostgreSQL 实时访问表列表和表结构DESCRIBE TABLE。
支持表结构修改( ALTER TABLE ... ADD|DROP COLUMN)。如果use_table_cache参数(参见下面的引擎参数)设置为1,表结构将被缓存并且不会检查是否被修改,但可以使用查询进行DETACH更新ATTACH。
创建
CREATE DATABASE test_database
ENGINE = PostgreSQL('host:port', 'database', 'user', 'password'[, `schema`, `use_table_cache`]);
MySQL
允许连接到远程 MySQL 服务器上的数据库并执行INSERT查询SELECT以在 ClickHouse 和 MySQL 之间交换数据。
数据库MySQL引擎将查询转换到 MySQL 服务器,以便您可以执行SHOW TABLES或 等操作SHOW CREATE TABLE。
您不能执行以下查询:
- RENAME
- CREATE TABLE
- ALTER
创建
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
SQLite
允许连接到SQLite数据库并执行INSERT查询SELECT以在 ClickHouse 和 SQLite 之间交换数据。
MaterializedMySQL
使用 MySQL 中现有的所有表以及这些表中的所有数据创建 ClickHouse 数据库。ClickHouse 服务器作为 MySQL 副本。它读取binlog并执行 DDL 和 DML 查询。
创建
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MaterializedMySQL('host:port', ['database' | database], 'user', 'password') [SETTINGS ...]
[TABLE OVERRIDE table1 (...), TABLE OVERRIDE table2 (...)]