1. 程式人生 > 其它 >連續四年百度Java崗必問面試題!深夜思考

連續四年百度Java崗必問面試題!深夜思考

連續四年百度Java崗必問面試題!深夜思考

ClickHouse 是什麼?

ClickHouse:是一個用於聯機分析(OLAP)的列式資料庫管理系統(DBMS)

我們首先理清一些基礎概念

  • OLTP:是傳統的關係型資料庫,主要操作增刪改查,強調事務一致性,比如銀行系統、電商系統
  • OLAP:是倉庫型資料庫,主要是讀取資料,做複雜資料分析,側重技術決策支援,提供直觀簡單的結果

接著我們用圖示,來理解一下列式資料庫行式資料庫區別

在傳統的行式資料庫系統中(MySQL、Postgres和MS SQL Server),資料按如下順序儲存:

在列式資料庫系統中(ClickHouse),資料按如下的順序儲存:

兩者在儲存方式上對比:

以上是ClickHouse基本介紹

二、業務問題

業務端現有儲存在Mysql中,5000萬資料量的大表及兩個輔表,單次聯表查詢開銷在3min+,執行效率極低。經過索引優化、水平分表、邏輯優化,成效較低,因此決定藉助ClickHouse來解決此問題

最終通過優化,查詢時間降低至1s內,查詢效率提升200倍!

希望通過本文,可以幫助大家快速掌握這一利器,並能在實踐中少走彎路。

三、ClickHouse實踐

1.Mac下的Clickhouse安裝

我是通過docker安裝,也可以下載CK編譯安裝,相對麻煩一些。

2.資料遷移:從Mysql到ClickHouse

ClickHouse支援Mysql大多數語法,遷移成本低,目前有[五種遷移]

  • create table engin mysql,對映方案資料還是在Mysql
  • insert into select from,先建表,在匯入
  • create table as select from,建表同時匯入
  • csv離線匯入
  • streamsets

選擇第三種方案做資料遷移:

CREATE TABLE [IF NOT EXISTS] [db.]table_name ENGINE = Mergetree AS SELECT * FROM mysql('host:port', 'db', 'database', 'user', 'password')

3.效能測試對比
型別 資料量 表大小 查詢速度
Mysql 5000萬 10G 205s
ClickHouse 5000萬 600MB 1s內
4.資料同步方案

臨時表

圖片來源:新建temp中間表,將Mysql資料全量同步到ClickHouse內temp表,再替換原ClickHouse中的表,適用資料量適度,增量和變數頻繁的場景

總結

本文從基礎到高階再到實戰,由淺入深,把MySQL講的清清楚楚,明明白白,這應該是我目前為止看到過最好的有關MySQL的學習筆記了,我相信如果你把這份筆記認真看完後,無論是工作中碰到的問題還是被面試官問到的問題都能迎刃而解!

重要的事:需要領取完整版的MySQL學習筆記的話,請轉發+關注後點這裡免費獲取到免費的下載方式!

MySQL50道高頻面試題整理: