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 陳述式」。
其他資源
在 https://forums.mysql.com/list.php?112 提供專門討論
ARCHIVE儲存引擎的論壇。