clickhouse
1 課程介紹
和hadoop無關,俄羅斯,速度快
3 介紹&特點
1 列式存儲
在線分析處理。
使用sql進行查詢。列式存儲更適合查詢分析的場景。新增時候有一個尋址的過程。更容易進行壓縮行式存儲。增刪改查都需要的時候。
2 DBMS功能
包括ddl,dml和各種函數,用戶權限管理,數據備份恢復。
3 多樣化引擎
innodb 提供了事務。
合并樹,日志,接口等二十多種引擎。
4 高吞吐寫入能力
LSM tree
數據寫入后定期在后臺合并。
更新,老的數據新的數據都在,新增字段作為標記,版本號(大代表新的數據)在數據寫入時是順序寫。
merge sort
合并期間不能對外提供服務。
5 數據分區與線程級并行
partition->index->多個cpu核心分別處理其中一部分實現并行數據處理。
單條查詢能利用整機的所有cpu。
極強的并行處理能力,對于高qps并不強(query per second 每秒查詢次數)
cpu是一個瓶頸。不適合做初始的存儲
適合處理過的數據,大量寬表。(指的是都已經關聯好了的表)
盡量避免做join,和底層實現原理有關。
多表對性能影響很大的。
右邊那種表加載到內存。
分布式,一張表存在多個節點,影響更大。
4 準備工作
關閉防火墻
ulimit -a 系統的一些限制
open files
max user processes用戶最大進程數
文件數(同時打開)
安裝要細致。centos取消 selinux
來源美國國家安全局。內核級別的更改,需要分發,重啟才能生效。
5 單機安裝
cannel 同步數據
默認沒有密碼,演示環境,直接回車,
6 數據類型
1、整型
byte 8bit Int8
short
int
long
2、浮點型
盡可能用整數形式存儲
存錢 decimal
3、布爾型
4、decimal
有符號的浮點數
5、字符串
String
FixedString(N) 固定長度N的字符串。
6、枚舉類型
create table t_enum
(x Enum8('hello'=1,'world'=2)
)
ENGINE=TinyLog;insert into t_enum values ('hello'),('world');
7、時間類型
Date 年月日
Datetime
Datetime64
8、數組
array
7 表引擎介紹
1、介紹
決定了如何存儲表的數據
數據存儲位置和方式,從哪里讀,從哪里寫? 磁盤
并發數據訪問,可以多線程執行一條查詢。
索引使用,如果存在?
引擎名稱大小寫敏感。
大駝峰。
2、TinyLog
列形式保存在磁盤,不支持索引,沒有并發控制。
測試環境用的。
3、memory
基于內存,重啟數據丟失。
簡單查詢性能表現好。
4、MergeTree
最強大的表引擎。
支持索引和分區。
相當于innodb至于mysql
clickhouse直接映射到mysql表,
并不真正擁有數據,但是可以查詢。
可以對遠程在mysqld 的數據進行select查詢。
8 MergeTree簡單使用
primary key(id) 不唯一。建表語句
create table t_order_mt(id UInt32,sku_id String,create_time Datetime
)engine=MergeTree
partition by to下載dbever
驅動,自己去下載。添加文件。
9 分區詳解
10 主鍵
16 開發中引擎的選擇
冪等性,
重復寫入,
replaciongMergeTree
存儲完全繼承了mergetree,多了一個去重的功能。
17 update和delete
雖然可以實現修改和刪除,但是是一種很重的操作,不支持事務。
更新:插入一條新的數據,version+1,查詢時候加上一個過濾條件,where version最大。只是提供一個思路。
18 查詢和函數介紹
支持子查詢
19 多維分析函數