infobright資料倉儲中的comment lookup
infobright資料倉儲能在高強度的壓縮中把大量的資料壓縮儲存,平時在不斷查詢的過程就是在做資料解壓的過程,當然具體的詳細介紹在以前有提過,這裡就不做過程的介紹()在infobright中支援所有的MySQL原有的資料類型,其中對整形的效率會比其他類型高,這一點同MySQL差不多,在infobright中比較高效的類型如下:
1、TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT
2、DECIMAL(盡量減少小數點後的精度)
3、DATE ,TIME
這3種類型的資料能有比較高的壓縮比例及查詢速度,而效率比較低的、不推薦使用的資料類型有這幾種:
1、BINARY VARBINARY(二進位類型)
2、FLOAT
3、DOUBLE
4、VARCHAR
5、TINYTEXT TEXT(可變長度的非Unicode類型)
這些資料類型在使用的過程中效率比較低且壓縮比例並不是很高,其中VARCHAR欄位在MySQL中效率就不如CHAR欄位,當然在某些業務情境下可能會不得不用到CHAR(VARCHAR)的時候又經常需要頻繁的查詢時,但資料的記錄數又並不是很多時(不多於10000行,且資料的類型多於10種以上,類似於省份、UUID這類的資料),就可以通過comment lookup的方式建立建表時的DDL來提高平時查詢的效率如下:
#原建表DDL
CREATE TABLE `test_default` (
`dstphone` varchar(11) DEFAULT NULL,
`gateid` varchar(255) DEFAULT NULL
) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8;
#comment lookup建表DDL
CREATE TABLE `test_lookup` (
`dstphone` varchar(11) DEFAULT NULL COMMENT 'lookup',
`gateid` varchar(255) DEFAULT NULL COMMENT 'lookup'
) ENGINE=BRIGHTHOUSE DEFAULT CHARSET=utf8;
這裡需要注意的是comment lookup的方式目前僅有在CHAR(VARCHAR)中能使用,其次在平時帶來更高的查詢效率所帶來的代價就是磁碟開銷,因為infobright在平時查詢的時候就是在做解壓的過程,所以使用comment lookup的方式就是降低壓縮比例,在查詢的時候能更快速的解壓資料,如下可以看出comment lookup的方式同預設的建表時不同的壓縮比例
查詢效率如下:
可以看相同的資料下所佔用磁碟空間,但相應的在查詢記錄不能超過10000行,不然反而還會降低其效率:
所以在使用的過程中還需要根據實際情況來選擇。