ARCHIVE
儲存引擎會產生特殊用途的資料表,以非常小的空間儲存大量未索引的資料。
表 18.5 ARCHIVE 儲存引擎功能
功能 | 支援 |
---|---|
B 樹索引 | 否 |
備份/時間點復原(實作於伺服器中,而非儲存引擎中。) | 是 |
叢集資料庫支援 | 否 |
叢集索引 | 否 |
壓縮資料 | 是 |
資料快取 | 否 |
加密資料 | 是(透過伺服器中的加密函數實作。) |
外鍵支援 | 否 |
全文搜尋索引 | 否 |
地理空間資料類型支援 | 是 |
地理空間索引支援 | 否 |
雜湊索引 | 否 |
索引快取 | 否 |
鎖定粒度 | 列 |
MVCC | 否 |
複製支援(實作於伺服器中,而非儲存引擎中。) | 是 |
儲存限制 | 無 |
T 樹索引 | 否 |
交易 | 否 |
更新資料字典的統計資料 | 是 |
ARCHIVE
儲存引擎包含在 MySQL 二進位發行版本中。若要從原始碼建置 MySQL 時啟用此儲存引擎,請使用 -DWITH_ARCHIVE_STORAGE_ENGINE
選項呼叫 CMake。
若要檢查 ARCHIVE
引擎的原始碼,請查看 MySQL 原始碼發行版本的 storage/archive
目錄。
您可以使用 SHOW ENGINES
語法檢查 ARCHIVE
儲存引擎是否可用。
當您建立 ARCHIVE
資料表時,儲存引擎會建立名稱以資料表名稱開頭的檔案。資料檔的副檔名為 .ARZ
。最佳化作業期間可能會出現 .ARN
檔案。
ARCHIVE
引擎支援 INSERT
、REPLACE
和 SELECT
,但不支援 DELETE
或 UPDATE
。它確實支援 ORDER BY
運算、BLOB
資料行和空間資料類型(請參閱第 13.4.1 節,「空間資料類型」)。不支援地理空間參考系統。ARCHIVE
引擎使用列層級鎖定。
ARCHIVE
引擎支援 AUTO_INCREMENT
資料行屬性。AUTO_INCREMENT
資料行可以有唯一或非唯一索引。嘗試在任何其他資料行上建立索引會導致錯誤。ARCHIVE
引擎也支援 CREATE TABLE
語法中的 AUTO_INCREMENT
資料表選項,以分別指定新資料表的初始序列值或重設現有資料表的序列值。
ARCHIVE
不支援將小於目前最大資料行值的數值插入 AUTO_INCREMENT
資料行中。嘗試這樣做會導致 ER_DUP_KEY
錯誤。
若未請求 BLOB
資料行,ARCHIVE
引擎會忽略它們,並在讀取時跳過它們。
ARCHIVE
儲存引擎不支援分割。
儲存:列在插入時會被壓縮。ARCHIVE
引擎使用 zlib
無損資料壓縮(請參閱 http://www.zlib.net/)。您可以使用 OPTIMIZE TABLE
分析資料表並將其壓縮為較小的格式(如需使用 OPTIMIZE TABLE
的原因,請參閱本節稍後內容)。引擎也支援 CHECK TABLE
。有幾種類型的插入方式。
擷取:在擷取時,列會依需求解壓縮;沒有列快取。SELECT
操作會執行完整的資料表掃描:當發生 SELECT
時,它會找出目前可用的列數並讀取該數量的列。SELECT
會以一致讀取方式執行。請注意,除非僅使用大量插入,否則在插入期間大量使用 SELECT
語法會降低壓縮率。若要達到較佳的壓縮率,您可以使用 OPTIMIZE TABLE
或 REPAIR TABLE
。SHOW TABLE STATUS
報告的 ARCHIVE
資料表中的列數永遠是正確的。請參閱第 15.7.3.4 節,「OPTIMIZE TABLE 語法」、第 15.7.3.5 節,「REPAIR TABLE 語法」,以及第 15.7.7.37 節,「SHOW TABLE STATUS 語法」。
其他資源
如需
ARCHIVE
儲存引擎的專屬論壇,請造訪 https://forums.mysql.com/list.php?112。