XtraDB/InnoDB的文件格式(已提交到MariaDB官方手册)
本文为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。
XtraDB/InnoDB的文件格式(已提交到MariaDB官方手册)的更多相关文章
- 翻译:XtraDB/InnoDB中的AUTO_INCREMENT处理方式(已提交到MariaDB官方手册)
本文为mariadb官方手册:XtraDB/InnoDB中的AUTO_INCREMENT处理方式的译文. 原文:https://mariadb.com/kb/en/auto_increment-han ...
- 翻译:CREATE FUNCTION语句(已提交到MariaDB官方手册)
本文为mariadb官方手册:CREATE FUNCTION的译文. 原文:https://mariadb.com/kb/en/library/create-function/我提交到MariaDB官 ...
- 翻译:SET PASSWORD语句(已提交到MariaDB官方手册)
本文为mariadb官方手册:SET PASSWORD的译文. 原文:https://mariadb.com/kb/en/library/set-password/我提交到MariaDB官方手册的译文 ...
- 翻译:SET Variable(已提交到MariaDB官方手册)
本文为mariadb官方手册:SET Variable的译文. 原文:https://mariadb.com/kb/en/set-variable/我提交到MariaDB官方手册的译文:https:/ ...
- 翻译:DECLARE Variable(已提交到MariaDB官方手册)
本文为mariadb官方手册:DECLARE Variable的译文. 原文:https://mariadb.com/kb/en/library/declare-variable/我提交到MariaD ...
- 翻译:赋值操作符(:=)(已提交到MariaDB官方手册)
本文为mariadb官方手册:赋值操作符(:=)的译文. 原文:https://mariadb.com/kb/en/assignment-operator/ 我提交到MariaDB官方手册的译文:ht ...
- 翻译:last_value()函数(已提交到MariaDB官方手册)
本文为mariadb官方手册:LAST_VALUE()的译文. 原文:https://mariadb.com/kb/en/last_value/我提交到MariaDB官方手册的译文:https://m ...
- 翻译:group_concat()函数(已提交到MariaDB官方手册)
本文为mariadb官方手册:group_concat()函数的译文. 原文:https://mariadb.com/kb/en/group_concat/ 我提交到MariaDB官方手册的译文:ht ...
- 翻译:SET子句(已提交到MariaDB官方手册)
本文为mariadb官方手册:SET的译文. 原文:https://mariadb.com/kb/en/set/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh ...
随机推荐
- javascript小括号、中括号、大括号学习总结
作为一名编程人员,和括号打交道是必不可少的.你可知道在不同的上下文中,括号的作用是不一样的,今天就让我们简单总结下javascript小括号.中括号.大括号的用法. 总的来说,JavaScript中小 ...
- php中连接mysql数据库的第一步操作
<?phperror_reporting(E_ALL ^ E_DEPRECATED);//设置报警级别人$mylink = mysql_connect("localhost" ...
- ZOJ1994有源汇上下界可行流
http://fastvj.rainng.com/contest/236779#problem/G Description: n 行 m 列 给你行和 与 列和 然后有Q个限制,表示特定单元格元素大小 ...
- Delegate、Thread、Task、ThreadPool几种方式创建异步任务性能对比
开始预测的结果是 Task>Delegate>ThreadPool>>Thread. (一)测试代码 static async Task<int> AsyncTas ...
- 逆向基本使用:IDA
如何导出IDA数据中数组的内容进行编程? 如这种: .data:00427A54 ; char byte_427A54[] .data:00427A54 byte_427A54 db 0FEh ; D ...
- eclipse安装及配置pydev
1.首先安装jre,这里记住jre的安装目录,32位操作系统默认安装在“C:\Program Files (x86)\Java\jre1.8.0_91” 2.配置eclipse,这里使用的是压缩包不需 ...
- VS2013和NuGet
1.前言 有时候在使用VS2013时需要用到第三方的dll,这时候NuGet就是一个很方便的工具.但是这个小东东也是和VS不同的版本相关的,最开始不知道,乱安装一气,最后就是很多情况下不能用.这两天在 ...
- Windows下Tomcat内存占用过高问题跟踪(ProcessExplorer+jstack)
一.问题描述 Tomcat下面部署很多个java项目的war包,tomcat启动一段时间后,发现cpu占用过高,整个界面卡死! 二.通过process explorer查看java进程下的线程 pro ...
- Javascript高级编程学习笔记(68)—— 事件(12)设备事件
设备事件 随着智能手机与平板电脑的普及,为了更好地让用户与这些设备进行交互 浏览器引入了一种新的方式,而一类新的事件也应运而生,这就是设备事件 W3C从2011年开始制定关于设备事件的草案 下面将会介 ...
- Android6.0以上关于RecyclerView显是不全的问题
Android6.0以上关于RecyclerView显是不全的问题 需求描述 适配的时候发现Android 6.0以上,RecyclerView显示不全,以下是没有问题的.这个时候查看布局文件,可以看 ...