Skip to main content

数据库引擎

官网说明

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 (...)]