BrightHouse儲存引擎

2021-07-11 12:16:04 字數 1997 閱讀 9832

mysql支援多種儲存引擎儲存。這樣,在處理不同型別資料的時候,可以針對不同業務場景,提供更為高效,靈活的方式。

mysql常見的儲存引擎包括:myisam,innodb(最為常用的兩種),merge、memory(heap)、bdb(berkeleydb)、example、federated、archive、csv、blackhole等。

現在大資料環境下,一般都使用hive作離線查詢,hue則是hive查詢的乙個介面介面,運營人員一般都通過hue去hive裡查詢相關資料。但是hive作為基於mr的產品,有其天生的缺陷:

1.hive不管查詢多大的資料量都需要啟動job。如果是查詢少量資料,啟動job的時間遠遠大於實際查詢時間。換句話說,不管多大的資料量,hive基本不可能在秒級給出查詢結果。

2.hive受限於hadoop集群的計算資源。如果計算資源被佔滿,比如集群啟動了某些大job,計算資源被佔滿,hive查詢一直處於排隊狀態。這個時候運營人員會紛紛過來找rd,嚷嚷說為什麼查了半天就是看不到結果。

3.hive屬於sql的正規化。對於非結構化的資料集,基本無能為力或者說很吃力。

因此在這種環境下,我們採用mysql+brighthouse的組合,能較好地解決這個問題。

brighthouse是infobright資料庫的關鍵引擎。infobright 資料庫是基於mysql的,它的設計主要是用於大規模的資料倉儲和分析優化。開源社群版本可以免費試用。

安裝過程不詳細描述了(主要原因是不是我自己安裝的…)。安裝成功後,登入mysql。

如圖所示,對應engine的值就是brighthouse。

再檢視一下此時mysql的引擎情況

如圖所示,此時brighthouse已經成為我們的預設引擎,建立表的時候如果不指定引擎型別會自動建立成為brighthouse。

查了一些資料,社群版的不支援insert,update,delete對資料操作和alter對結構操作,不支援高併發查詢操作,資料儲存高壓縮一般為18:1,不能與myisam,innodb等引擎進行連線查詢 , 資料必須使用 load 方式寫入。

一般的load語句寫法:

load data infile 'filename' ignore into table table_name character set utf8 fields terminated by '\t' lines terminated by '\n' (fields)
filename是要匯入資料的原始檔,後面中的 \t 是每個資料之間的間隔符,\n 是每條資料的間隔符,fields 是對應的字段列表。

在裡面新建一張表mvt_ptr_cvr_ab_test,然後匯入將近100萬的資料量,然後查詢:

mysql> select count(*) from mvt_ptr_cvr_ab_test;

+----------+

| count(*) |

+----------+

| 997761 |

+----------+

1 row in set (0.00 sec)

如果在客戶端查詢,顯示的時間為0.002ms。百萬級資料,0.002ms,這速度,要逆天。。。

說了半天這東東的好處,同樣在網上查了些資料,主要的不爽地方如下:

1.開源版不支援insert等資料操作語句,匯入資料只能用load語句(這個匯入資料很快)

2.還不支援utf-8(這個最煩人了,儘管它提供了一種方案來解決這個問題)

3.企業版可也不便宜$10000/t (mysql才600刀)(資料倉儲類的軟體都很貴,這已經算很便宜的了_)

4.跟我們平常用的其他引擎(如innodb)不是很相容,比如我們前面提到的不能與myisam,innodb等引擎進行連線查詢

Mysql 儲存引擎之 MyISAM儲存引擎

myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...

mysql儲存引擎 mysql儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...

mysql個儲存引擎 MySQL儲存引擎

mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...