本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Mostly 編碼
當資料欄的資料類型大於大部份存放值所需的資料類型時,Mostly 編碼很有用。您可以對此類型的資料欄指定 mostly 編碼,將資料欄中的大部分值壓縮為更小的標準儲存空間大小。剩下無法壓縮的值會以其原始格式存放。例如,您可以將 16 位元資料欄 (例如 INT2 資料欄) 壓縮為 8 位元儲存空間。
通常,mostly 編碼會使用下列資料類型:
-
SMALLINT/INT2 (16 位元)
-
INTEGER/INT (32 位元)
-
BIGINT/INT8 (64 位元)
-
DECIMAL/NUMERIC (64 位元)
選擇 mostly 編碼的適當變異來符合資料欄之資料類型的大小。例如,將 MOSTLY8 套用至定義為 16 位元整數資料欄的資料欄。不允許將 MOSTLY16 套用至具有 16 位元資料類型的資料欄,也不允許將 MOSTLY32 套用至具有 32 位元資料類型的資料欄。
當資料欄中有相當多的值無法壓縮時,Mostly 編碼可能比無壓縮更沒效率。在將其中一種編碼套用到資料欄之前,請執行檢查。您現在將載入的大部分值 (也可能在未來載入) 應納入下表中顯示的範圍。
編碼 | 壓縮儲存空間大小 | 可以壓縮的值範圍 (範圍外的值會以原始形式存放) |
---|---|---|
MOSTLY8 | 1 位元組 (8 位元) | -128 到 127 |
MOSTLY16 | 2 位元組 (16 位元) | -32768 到 32767 |
MOSTLY32 | 4 位元組 (32 位元) | -2147483648 到 +2147483647 |
注意
對於小數,忽略小數點以判斷值是否納入範圍。例如,1,234.56 會視為 123,456,且可在 MOSTLY32 資料欄中壓縮。
例如,VENUE 資料表中的 VENUEID 資料欄會定義為原始整數資料欄,這表示其值佔用 4 位元組的儲存空間。不過,此欄的值目前範圍是 0
到 309
。因此,針對 VENUEID 使用 MOSTLY16 編碼來重建和重新載入此資料表,會將該資料欄中每個值的儲存空間減少至 2 個位元組。
如果另一個資料表中參考的 VENUEID 值大部分在範圍 0 到 127,則將該外部索引鍵資料欄編碼為 MOSTLY8 可能就有意義。在做出選擇之前,請針對參考資料表資料執行數個查詢,以了解值是否大部分都落入 8 位元、16 位元或 32 位元範圍。
下表顯示在使用 MOSTLY8、MOSTLY16 和 MOSTLY32 編碼時特定數值的壓縮大小:
原始值 | 原始 INT 或 BIGINT 大小 (位元組) | MOSTLY8 壓縮大小 (位元組) | MOSTLY16 壓縮大小 (位元組) | MOSTLY32 壓縮大小 (位元組) |
---|---|---|---|---|
1 | 4 | 1 | 2 | 4 |
10 | 4 | 1 | 2 | 4 |
100 | 4 | 1 | 2 | 4 |
1000 | 4 | 與原始資料大小相同 | 2 | 4 |
10000 | 4 | 2 | 4 | |
20000 | 4 | 2 | 4 | |
40000 | 8 | 與原始資料大小相同 | 4 | |
100000 | 8 | 4 | ||
2000000000 | 8 | 4 |