天天看點

Clickhouse資料庫二:特點Clickhouse的特點

Clickhouse的特點

2.1列式存儲

Id Name Age
1 張三 18
2 李四 22
3 王五 34
  • 采用行式存儲時,資料在磁盤上的組織結構為:
    Clickhouse資料庫二:特點Clickhouse的特點
    好處是想查某個人所有的屬性時,可以通過一次磁盤查找加順序讀取就可以。但是當想查所有人的年齡時,需要不停的查找,或者全表掃描才行,周遊的很多資料都是不需要的。
  • 而采用列式存儲時,資料在磁盤上的組織結構為:
    Clickhouse資料庫二:特點Clickhouse的特點
    這時想查所有人的年齡隻需把年齡那一列拿出來就可以了

列式儲存的好處:

  1. 對于列的聚合,計數,求和等統計操作原因優于行式存儲。
  2. 由于某一列的資料類型都是相同的,針對于資料存儲更容易進行資料壓縮,每一列選擇更優的資料壓縮算法,大大提高了資料的壓縮比重。
  3. 由于資料壓縮比更好,一方面節省了磁盤空間,另一方面對于cache也有了更大的發揮空間。

2.2DBMS功能

  • ClickHouse支援基于SQL的聲明式查詢語言,該語言大部分情況下是與SQL标準相容的。
  • 支援的查詢包括 GROUP BY,ORDER BY,IN,JOIN以及非相關子查詢。
  • 不支援視窗函數和相關子查詢

2.3多樣化引擎

clickhouse和mysql類似,把表級的存儲引擎插件化,根據表的不同需求可以設定不同的存儲引擎。

目前包括合并樹、日志、接口和其他四大類20多種引擎

2.4高吞吐寫入能力

ClickHouse采用類

LSM Tree

的結構,資料寫入後定期在背景Compaction。

通過類LSM tree的結構,ClickHouse在資料導入時全部是順序append寫,寫入後資料段不可更改,在背景compaction時也是多個段 merge sort後順序寫回磁盤。

順序寫的特性,充分利用了磁盤的吞吐能力,即便在HDD上也有着優異的寫入性能。

官方公開benchmark測試顯示能夠達到50MB-200MB/s的寫入吞吐能力,按照每行100Byte估算,大約相當于50W-200W條/s的寫入速度。
           

2.5資料分區和線程并行

ClickHouse将資料劃分為多個partition,每個partition再進一步劃分為多個index granularity(粒度),然後通過多個CPU核心分别處理其中的一部分來實作并行資料處理。

在這種設計下,單條Query就能利用整機所有CPU。極緻的并行處理能力,極大的降低了查詢延時。

是以,clickhouse即使對于大量資料的查詢也能夠化整為零平行處理。
           

但是有一個弊端就是對于單條查詢使用多cpu,就不利于同時并發多條查詢。是以對于

高qps的查詢業務,clickhouse并不是強項

2.6一些不足

  1. 沒有完整的事務支援。
  2. 缺少高頻率,低延遲的修改或删除已存在資料的能力。僅能用于批量删除或修改資料,但這符合 GDPR。
  3. 稀疏索引使得ClickHouse不适合通過其鍵檢索單行的點查詢。

繼續閱讀