clickhouse 創建數據庫和表

一、先來說一下,ClickHouse為啥快

MySQL單條SQL是單線程的,只能跑滿一個core,ClickHouse相反,有多少CPU,吃多少資源,所以飛快;
ClickHouse不支持事務,不存在隔離級別。這里要額外說一下,有人覺得,你一個數據庫都不支持事務,不支持ACID還玩個毛。ClickHouse的定位是分析性數據庫,而不是嚴格的關系型數據庫。又有人要問了,數據都不一致,統計個毛。舉個例子,汽車的油表是100%準確么?為了獲得一個100%準確的值,難道每次測量你都要停車檢查么?統計數據的意義在于用大量的數據看規律,看趨勢,而不是100%準確。
IO方面,MySQL是行存儲,ClickHouse是列存儲,后者在count()這類操作天然有優勢,同時,在IO方面,MySQL需要大量隨機IO,ClickHouse基本是順序IO。
有人可能覺得上面的數據導入的時候,數據肯定緩存在內存里了,這個的確,但是ClickHouse基本上是順序IO,用過就知道了,對IO基本沒有太高要求,當然,磁盤越快,上層處理越快,但是99%的情況是,CPU先跑滿了(數據庫里太少見了,大多數都是IO不夠用)。
二、創建庫

CREATE/ATTACH DATABASE zabbix ENGINE = Ordinary;

ATTACH 也可以建庫,但是metadata目錄下不會生成.sql文件,一般用于metadata元數據sql文件被刪除后,恢復庫表結構使用

三、創建本地表

CREATE TABLE test02( id UInt16,col1 String,col2 String,create_date date ) ENGINE = MergeTree(create_date, (id), 8192);

ENGINE:是表的引擎類型,

MergeTree:最常用的,MergeTree要求有一個日期字段,還有主鍵。

Log引擎沒有這個限制,也是比較常用。

ReplicatedMergeTree:MergeTree的分支,表復制引擎。

Distributed:分布式引擎。

create_date:是表的日期字段,一個表必須要有一個日期字段。

id:是表的主鍵,主鍵可以有多個字段,每個字段用逗號分隔。

8192:是索引粒度,用默認值8192即可。

四、創建分布式表

CREATE TABLE distributed_table AS table ENGINE = Distributed(cluster, db, table, rand());

cluster:配置文件中的群集名稱。

db:庫名。

table:本地表名。

rand():分片方式:隨機。

intHash64():分片方式:指定字段做hash。

Distribute引擎會選擇每個分發到的Shard中的”健康的”副本執行SQL

五、DDL

如果想按集群操作,需要借助zookeeper,在config.xml中添加配置

<distributed_ddl>

<path>/clickhouse/task_queue/ddl</path>

</distributed_ddl>

一個節點創建表,會同步到各個節點

CREATE TABLE db.table [ON CLUSTER cluster] (...)

添加、刪除、修改列

ALTER TABLE [db].table [ON CLUSTER cluster] ADD|DROP|MODIFY COLUMN ...

rename 支持*MergeTree和Distributed

rename table db.table1 to db.table2 [ON CLUSTER cluster]

truncate table db.table;不支持Distributed引擎

六、delete/update 不支持Distributed引擎

ALTER TABLE [db.]table DELETE WHERE filter_expr...

ALTER TABLE [db.]table UPDATE column1 = expr1 [, ...] WHERE ...

七、分區表

按時間分區:

toYYYYMM(EventDate):按月分區

toMonday(EventDate):按周分區

toDate(EventDate):按天分區

按指定列分區:

PARTITION BY cloumn_name

對分區的操作:

alter table test1 DROP PARTITION [partition] #刪除分區

alter table test1 DETACH PARTITION [partition]#下線分區

alter table test1 ATTACH PARTITION [partition]#恢復分區

alter table .test1 FREEZE PARTITION [partition]#備份分區

八、數據同步

  1. 采用remote函數

insert into db.table select * from remote('目標IP',db.table,'user','passwd')

  1. csv文件導入clickhouse

cat test.csv | clickhouse-client -u user --password password --query="INSERT INTO db.table FORMAT CSV"

  1. 同步mysql庫中表

CREATE TABLE tmp ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('hostip:3306', 'db', 'table', 'user', 'passwd') ;

4) clickhouse-copier 工具

九、時間戳轉換

select toUnixTimestamp('2018-11-25 00:00:02');

select toDateTime(1543075202);

十、其他事項

  1. clickhouse的cluster環境中,每臺server的地位是等價的,即不存在master-slave之說,是multi-master模式。

  2. 各replicated表的宿主server上要在hosts里配置其他replicated表宿主server的ip和hostname的映射。

  3. 上面描述的在不同的server上建立全新的replicated模式的表,如果在某臺server上已經存在一張replicated表,并且表中已經有數據,這時在另外的server上執行完replicated建表語句后,已有數據會自動同步到其他server上面。

  4. 如果zookeeper掛掉,replicated表會切換成read-only模式,不再進行數據同步,系統會周期性的嘗試與zk重新建立連接。

  5. 如果在向一張replicated表insert數據的時候zookeeper掛掉,這時候會拋一個異常,等到與zk重新建立連接以后,系統(其他replicated表所在server)會檢查本地文件與預期文件(保存在zk上)的差別,如果是輕微的差別,直接同步覆蓋,如果發現有數據塊損壞或者識別不了,則將這些數據文件移動到“detached”子目錄,然后重新根據zk所記錄的文件信息進行副本的同步。

  6. drop掉某一臺server上的replicated表,不會對其他server上面的replicated表造成影響。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,836評論 6 540
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,275評論 3 428
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,904評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,633評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,368評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,736評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,740評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,919評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,481評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,235評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,427評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,968評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,656評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,055評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,348評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,160評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,380評論 2 379

推薦閱讀更多精彩內容