数据库引擎

最近更新时间:2026-05-25 16:50:52

我的收藏
默认情况下,TCHouse-C 使用自己的数据库引擎,该引擎提供可配置的 表引擎 和所有支持的 SQL 语法。此外,还可以选择使用 MySQL 数据库引擎。

延时引擎

在距最近一次访问间隔 expiration_time_in_seconds 时间段内,将表保存在内存中,仅适用于 *Log 引擎表。由于针对这类表的访问间隔较长,对保存大量小的 *Log 引擎表进行了优化。

MySQL 引擎

MySQL 引擎用于将远程的 MySQL 服务器中的表映射到 TCHouse-C 中,并允许对表进行 INSERT 和 SELECT 查询,以便在 TCHouse-C 与 MySQL 之间进行数据交换。
MySQL 数据库引擎会将对其的查询转换为 MySQL 语法并发送到 MySQL 服务器中,因此可执行如 SHOW TABLES 或 SHOW CREATE TABLE 之类的操作。无法对其执行 RENAME、CREATE TABLE 和 ALTER 操作

CREATE DATABASE

CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
MySQL 数据库引擎参数说明:
参数
说明
host:port
连接的 MySQL 地址
database
连接的 MySQL 数据库
user
连接的 MySQL 用户
password
连接的 MySQL 用户密码
MySQL 和 TCHouse-C 支持的类型对应说明:
MySQL
TCHouse-C
UNSIGNED TINYINT
UInt8
TINYINT
Int8
UNSIGNED SMALLINT
UInt16
SMALLINT
Int16
UNSIGNED INT,UNSIGNED MEDIUMINT
UInt32
INT, MEDIUMINT
Int32
UNSIGNED BIGINT
UInt64
BIGINT
Int64
FLOAT
Float32
DOUBLE
Float64
DATE
日期
DATETIME,TIMESTAMP
BINARY
其他的 MySQL 数据类型将全部转换为 字符串
同时以上的所有类型都支持 可为空(类型名称)

使用示例

在 MySQL 中创建表:
mysql> USE test;Database changed
mysql> CREATE TABLE `mysql_table` (
-> `int_id` INT NOT NULL AUTO_INCREMENT,
-> `float` FLOAT NOT NULL,
-> PRIMARY KEY (`int_id`));Query OK, 0 rows affected (0,09 sec)
mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);Query OK, 1 row affected (0,00 sec)
mysql> select * from mysql_table;+--------+-------+| int_id | value |+--------+-------+| 1 | 2 |+--------+-------+1 row in set (0,00 sec)
在 TCHouse-C 中创建 MySQL 类型的数据库,同时与 MySQL 服务器交换数据:
CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password')
SHOW DATABASES
┌─name─────┐
default
│ mysql_db │
│ system │
└──────────┘
SHOW TABLES FROM mysql_db
┌─name─────────┐
│ mysql_table │
└──────────────┘
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
12
└────────┴───────┘
INSERT INTO mysql_db.mysql_table VALUES (3,4)
SELECT * FROM mysql_db.mysql_table
┌─int_id─┬─value─┐
12
34
└────────┴───────┘