Clickhouse库引擎介绍
官網(wǎng)資料:
clickhouse和mysql一樣提供了眾多功能不同的引擎。
默認(rèn)情況下,ClickHouse使用自身的數(shù)據(jù)庫引擎,該引擎可以提供表引擎配置(?table engines?)和SQL(SQL dialect.)
您還可以使用以下數(shù)據(jù)庫引擎:
-
MySQL
-
Lazy
MySQL引擎
允許連接到遠(yuǎn)程MySQL服務(wù)器上的數(shù)據(jù)庫,并執(zhí)行INSERT和SELECT查詢以在ClickHouse和MySQL之間交換數(shù)據(jù)。
Mysql數(shù)據(jù)庫引擎翻譯請求語句,并發(fā)送給MYSQL服務(wù)器,因此你可以執(zhí)行像SHOW TABLES?或者?SHOW CREATE TABLE這樣的操作。
但是您不能執(zhí)行以下查詢:
- RENAME
- CREATE TABLE
- ALTER
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')引擎參數(shù)
- host:port?— MySQL服務(wù)器地址。
- database?—遠(yuǎn)程數(shù)據(jù)庫名稱。
- user?— MySQL用戶。
- password?- 用戶密碼。
數(shù)據(jù)類型支持
| 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 | Date |
| DATETIME, TIMESTAMP | DateTime |
| BINARY | FixedString |
所有其他MySQL數(shù)據(jù)類型都轉(zhuǎn)換為String。
支持Nullable。
使用例子
MySQL中的表:
mysql> USE test; Database changedmysql> 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)ClickHouse中的數(shù)據(jù)庫,與MySQL服務(wù)器交換數(shù)據(jù):
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─┐ │ 1 │ 2 │ └────────┴───────┘ INSERT INTO mysql_db.mysql_table VALUES (3,4) SELECT * FROM mysql_db.mysql_table ┌─int_id─┬─value─┐ │ 1 │ 2 │ │ 3 │ 4 │ └────────┴───────┘Lazy引擎
在最后一次訪問之后,僅在expiration_time_in_seconds秒內(nèi)將表保留在RAM中。只有Log引擎的表可以使用。
該引擎針對存儲(chǔ)很多小型Log引擎表的情況進(jìn)行了優(yōu)化。因?yàn)閷τ谶@些表而言,兩次訪問之間的時(shí)間間隔很長。
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE testlazy ENGINE = Lazy(expiration_time_in_seconds);?
?
參考資料:https://clickhouse.tech/docs/en/engines/database-engines/
?
但是除了官網(wǎng)資料給出的三種clickhouse庫引擎外,《ClickHouse原理解析與應(yīng)用實(shí)踐》一書中給了五種:Ordinary/Dictionary/Memory/Mysql/Lazy
Ordinary
也就是默認(rèn)引擎,使用時(shí)無需在建庫時(shí)刻意聲明,在此數(shù)據(jù)庫下的表可以使用任意的類型的表引擎。官網(wǎng)中也有介紹。
可見默認(rèn)引擎是ordinary。
MySQL
MySQL 引擎,會(huì)自動(dòng)拉取遠(yuǎn)端 MySQL 中的數(shù)據(jù),并在該庫下創(chuàng)建 MySQL 表引擎的數(shù)據(jù)表。官網(wǎng)中也有介紹。
Lazy
日志引起,在該數(shù)據(jù)庫下只能創(chuàng)建 log 系列引擎的表。官網(wǎng)中也有介紹。
上次訪問之后expiration_time_in_seconds秒之前,表放內(nèi)存.該庫引擎下只能創(chuàng)建?*Log表引擎
Dictionary
字典引擎,此類數(shù)據(jù)庫會(huì)自動(dòng)為所有數(shù)據(jù)字典創(chuàng)建它們的數(shù)據(jù)表(加載配置文件中配置的字段表信息和數(shù)據(jù))
Memory
內(nèi)存引擎,用戶存放臨時(shí)數(shù)據(jù),數(shù)據(jù)只會(huì)在內(nèi)存中,不會(huì)涉及任何磁盤操作,當(dāng)服務(wù)重啟后數(shù)據(jù)會(huì)清空。并且對表引擎也有限制,只能使用memory類型表引擎。
所有數(shù)據(jù)只會(huì)保存在內(nèi)存中,服務(wù)重啟數(shù)據(jù)消失.
由上可見,該數(shù)據(jù)庫引擎只能夠創(chuàng)建Memory引擎表.
重啟服務(wù)后,數(shù)據(jù)庫還在,表已經(jīng)消失了.
?
?
參考資料:
https://blog.csdn.net/qq_28603127/article/details/109294061
https://www.cnblogs.com/DBArtist/p/clickhouse_Engines.html
?
總結(jié)
以上是生活随笔為你收集整理的Clickhouse库引擎介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科ccie网络工程师一定要里了解的网络
- 下一篇: GameBuilder游戏开发系列之见缝