ARCHIVE存儲引擎 |
發(fā)布時間: 2012/8/23 17:48:03 |
ARCHIVE存儲引擎被用來以非常小的覆蓋區(qū)存儲大量無索引數據。 要允許這個存儲引擎,在建立MySQL之時使用--with-archive-storage-engine選項來configure。如果這個存儲引擎可帶這個語句使用,你可以看見: mysql> SHOW VARIABLES LIKE 'have_archive';
當年創(chuàng)建一個ARCHIVE表,服務器在數據庫目錄創(chuàng)建一個表定義文件。文件由表的名字開始,并由一個.frm的擴展名。存儲引擎創(chuàng)建其它文件,所有都有由表名字開頭的名字。數據和元數據文件有擴展名.ARZ和.ARM。一個.ARN文件可能在優(yōu)化操作中出現(xiàn)。 ARCHIVE引擎僅支持INSERT和SELEC(無刪除,替換或更新)。它支持ORDER BY操作,BLOB 域,以及基本地所有數據類型,除了幾何數據類型(請參閱19.4.1節(jié),“MySQL 空間數據類型”)。ARCHIVE引擎使用行級鎖定。
存儲: 當記錄被插入時,它們被壓縮。ARCHIVE引擎使用zlib無損數據壓縮。OPTIMIZE TABLE的使用可以分析表,并把它打包為更小的格式( 使用OPTIMIZE TABLE的原因,往下看)。引擎頁支持CHECK TABLE。有數種被使用的插入類型:
· 直接插入INSERT之時把一行推僅壓縮緩沖,并且緩沖在它需要的時候刷新。到緩沖的插入被鎖定保護。一個SELECT強制一個刷新發(fā)生,除非進來的唯一插入是INSERT DELAYED(那些刷新如同需要一樣)。請參閱13.2.4.2節(jié),“INSERT DELAYED 語法”。 · 塊插入旨在它完成后可見,除非其它插入在同一時間發(fā)生,在這種情況下,塊插入可以被部分看見。一個SELECT不會導致一個塊插入的刷新,除非SELECT在被裝載時發(fā)生一個正常插入。
取回: 在取回時,記錄根據需要被解壓縮,沒有行緩存。一個SELECT操作執(zhí)行完全表格掃描:當一個SELECT發(fā)生之時,它找出當前有多少行可用,并讀行的數量。SELECT被當作持續(xù)讀來執(zhí)行。注意,許多SELECT語句在插入過程中會損壞壓縮,除非塊插入或者延遲的插入被使用。要修復任何已發(fā)生壓縮問題,你可以總是做OPTIMIZE TABLE(也支持REPAIR TABLE)。被SHOW TABLE STATUS報告的行數總是正確的。請參閱13.5.2.6節(jié),“REPAIR TABLE語法”,13.5.2.5節(jié),“OPTIMIZE TABLE語法”,13.5.4.18節(jié),“SHOW TABLE STATUS 語法”。 本文出自:億恩科技【mszdt.com】 |