本文為mariadb官方手冊:XtraDB/InnoDB File Format的譯文。 原文:https://mariadb.com/kb/en/library/xtradbinnodb-file-format/我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/z ...
本文為mariadb官方手冊:XtraDB/InnoDB File Format的譯文。
原文:https://mariadb.com/kb/en/library/xtradbinnodb-file-format/
我提交到MariaDB官方手冊的譯文:https://mariadb.com/kb/zh-cn/xtradbinnodb-file-format/
目前,XtraDB/InnoDB支持兩種格式的存儲文件:Antelope(羚羊)和Barracuda(梭魚)(譯者註:動物的名稱,且首字母從前到後排列,本文結尾還提到了26種文件格式,全是動物名命名)。可以通過伺服器變數innodb_file_format
設置文件的格式。預設設置為Antelope。在MySQL 5.5.0和5.5.6版本之間的文件格式預設為Barracuda,但這種格式在升級的時候,某些情況下可能會導致複製(replication)出現問題,因此在MariaDB中預設的格式總是設置為Antelope。
系統表空間使用Antelope文件格式,且無法更改。基於此,為了讓用戶表使用Barracuda格式,需要設置變數innodb_file_per_table
。
MariaDB starting with 10.0
從MariaDB 10.0開始,可以從表Information Schema INNODB_SYS_TABLES中查看到所使用的文件格式。
相容性
每個表空間都會用它最近所使用的表的文件格式id進行標記。所有版本的XtraDB/InnoDB都可以讀取較舊文件格式的表。但是,無法讀取更新一些格式的表。基於此原因,每次XtraDB/InnoDB打開一個表時都會檢查表空間的格式,並且在發現使用了新文件格式時報錯。
(原文:Each tablespace is tagged with the id of the most recent file format used by one of its tables. All versions of XtraDB/InnoDB can read tables that use an older file format. However, it can not read from more recent formats. For this reason, each time XtraDB/InnoDB opens a table it checks the tablespace's format, and returns an error if a newer format is used.)
可以通過設置變數innodb_file_format_check
來跳過檢查。但註意,在發現了未知格式時,XtraDB/InnoDB會嘗試修複該表,從而損壞表。這種情況會發生在禁用了innodb_file_format_check
變數後伺服器崩潰,或者使用快速停止服務(fast shutdown)時。
要從Barracuda格式降級為Antelope格式,可以通過ALTER TABLE
語句設置表的ROW_FORMAT
為支持Antelope的值。這會重建索引。
Antelope格式的表可以在MariaDB和低於5.5版本的MySQL上正常工作。
註意,表空間會被標記為支持所使用的行格式(row format)的最低文件格式。因此,即使啟用的是Barracuda,但如果使用的行格式為Compact或Redundant,表格式也會被標記為Antelope。
Antelope
Antelope是InnoDB的原始文件格式,支持COMPACT和REDUNDANT行格式,但不支持動態或壓縮行格式。
Barracuda
Barracuda是一種更新的InnoDB文件格式,支持COMPACT、REDUNDANT、DYNAMIC和COMPRESSED行格式。帶有BLOB或TEXT數據類型的表可大幅受益於dynamic行格式。
未來的格式
未來XtraDB/InnoDB可能會使用新的文件格式。每種格式都有自己的名稱,它們的標識符id從0-25。這些名稱已經想好了,全是根據字母表順序決定的動物名:Antelope, Barracuda, Cheetah, Dragon, Elk, Fox, Gazelle, Hornet, Impala, Jaguar, Kangaroo, Leopard, Moose, Nautilus, Ocelot, Porpoise, Quail, Rabbit, Shark, Tiger, Urchin, Viper, Whale, Xenops, Yak和Zebra。
回到Linux系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html
回到網站架構系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7576137.html
回到資料庫系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7586194.html
轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/8613039.html
註:若您覺得這篇文章還不錯請點擊右下角推薦,您的支持能激發作者更大的寫作熱情,非常感謝!