**clickhouse的缺點**
1:不支持事務,不適合處理業務邏輯
2:Log引擎不支持物理刪除(對于數據錯誤只能進行邏輯刪除),只有MergeTree引擎可以對數據進行更新刪除操作(binlog同步時表的引擎也需是MergeTree)
3:需要批量寫入,頻繁的單條寫入可能會產生Too many part報錯,建議每次1000行以上
4:高并發支持不夠好,qps默認100,可設置
**clickhouse的優點**
快,根據官網的介紹,在相同的配置與數據量下,響應速度是
Vertica的2.63倍(一款收費的列示存儲數據庫),
InfiniDB的17倍(可伸縮的分析數據庫引擎,基于mysql搭建)
MonetDB的27倍(開源的列式數據庫)
Hive的126倍
Mysql的429倍
**clickhouse的數據類型**
<span style="margin-left:10px;">1:Int,Int8,16,32,64范圍是-2N次方-1 ~ 2N次方-1-1,
<span style="margin-left:10px">2:Uint,UInt8,16,32,64,范圍是0~2N次方-1
<span style="margin-left:10px">3:Float32:float,Float64:double
<span style="margin-left:10px">4:String,無固定長度字符串,任意字節,類似于mysql的text
<span style="margin-left:10px">5:FixedString,FixedString類型和傳統意義上的Char類型有些類似,對于一些字符有明確長度的場合,可以使用固定長度的字符串。定長字符串通過FixedString(N)聲明,其中N表示字符串長度。但與Char不同的是,FixedString使用null字節填充末尾字符,而Char通常使用空格填充。與String相比,極少會使用FixedString,因為使用起來不是很方便
<span style="margin-left:10px">6:Decimal:
Decimal32(s)-(-1*10^(9-s),1*10^(9-s))
Decima64(s)-(-1*10^(18-s),1*10^(18-s))
Decimal128(s)-(-1*10^(38-s),1*10^(38-s))
例如,Decimal32(4) 可以表示 -99999.9999 至 99999.9999 的數值,步長為0.0001
<span style="margin-left:10px">7:時間類型
時間類型分為DateTime、DateTime64、Date三類。ClickHouse目前沒有時間戳類型。時間類型最高的精度是秒,也就是說,如果需要處理毫秒、微秒等大于秒分辨率的時間,則只能借助UInt類型實
DateTime
用四個字節(無符號的)存儲 Unix 時間戳,最小值為 0000-00-00 00:00:00,時間戳類型值精確到秒。DateTime類型包含時、分、秒信息,精確到秒,支持使用字符串形式寫入
DateTime64可以記錄亞秒,它在DateTime之上增加了精度的 設置
Date類型不包含具體的時間信息,只精確到天,它同樣也支持字符串形式寫入
<span style="margin-left:10px">8:其他格式,如數組,元祖,枚舉,ip等,文檔可查看
**clickhouse的引擎類型(最常用的是Log引擎與MergeTree引擎)**
1:clickhouse的引擎類型主要有Log,MergeTree,integration,Special
2:Log:log系列表引擎功能相對簡單,主要用于快速寫入小表,然后全部取出的場景,不支持update,不支持delete(若數據有錯或字段類型錯誤可建新表,然后執行以下sql:
INSERT INTO NEW_TABLE
SELECT CAST(COLUMN “字段類型”).......
FROM OLD_TABLE;
然后RENAME TABLE OLD_TABLE TO NEW_TABLE;修改表名,嘗試過5000萬數據修改字段,幾秒鐘;
insert會阻塞select操作