本文为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官方手册)的更多相关文章

  1. 翻译:XtraDB/InnoDB中的AUTO_INCREMENT处理方式(已提交到MariaDB官方手册)

    本文为mariadb官方手册:XtraDB/InnoDB中的AUTO_INCREMENT处理方式的译文. 原文:https://mariadb.com/kb/en/auto_increment-han ...

  2. 翻译:CREATE FUNCTION语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:CREATE FUNCTION的译文. 原文:https://mariadb.com/kb/en/library/create-function/我提交到MariaDB官 ...

  3. 翻译:SET PASSWORD语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:SET PASSWORD的译文. 原文:https://mariadb.com/kb/en/library/set-password/我提交到MariaDB官方手册的译文 ...

  4. 翻译:SET Variable(已提交到MariaDB官方手册)

    本文为mariadb官方手册:SET Variable的译文. 原文:https://mariadb.com/kb/en/set-variable/我提交到MariaDB官方手册的译文:https:/ ...

  5. 翻译:DECLARE Variable(已提交到MariaDB官方手册)

    本文为mariadb官方手册:DECLARE Variable的译文. 原文:https://mariadb.com/kb/en/library/declare-variable/我提交到MariaD ...

  6. 翻译:赋值操作符(:=)(已提交到MariaDB官方手册)

    本文为mariadb官方手册:赋值操作符(:=)的译文. 原文:https://mariadb.com/kb/en/assignment-operator/ 我提交到MariaDB官方手册的译文:ht ...

  7. 翻译:last_value()函数(已提交到MariaDB官方手册)

    本文为mariadb官方手册:LAST_VALUE()的译文. 原文:https://mariadb.com/kb/en/last_value/我提交到MariaDB官方手册的译文:https://m ...

  8. 翻译:group_concat()函数(已提交到MariaDB官方手册)

    本文为mariadb官方手册:group_concat()函数的译文. 原文:https://mariadb.com/kb/en/group_concat/ 我提交到MariaDB官方手册的译文:ht ...

  9. 翻译:SET子句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:SET的译文. 原文:https://mariadb.com/kb/en/set/我提交到MariaDB官方手册的译文:https://mariadb.com/kb/zh ...

随机推荐

  1. Catalog

      Java SE EE| Hibernate | Struts2Spring/SpringMVC | MyBatis C# Python PHP C/C++ | STL 汇编语言           ...

  2. 收集几个html和element-ui的录入控件

    我希望有一个控件去显示或输入账本的金额 先做一些资料收集,也希望大家给个建议 输入银行账号会设置每四位添加一个空格 https://blog.csdn.net/wkx18330698534/artic ...

  3. 1.Float精度在JS的解决方法

    最近做了一个有关折扣价的计算的功能,所有的运算都是在前台通过js来做,做完之后经过手工核算发现了一个问题,当时做的一个例子是10*0.94,按照我们正常的思维,这个结果应该是9.4,但是在js中的计算 ...

  4. 5-Django接口数据处理

    1.get接口数据处理 # get接口数据处理 def dadaHandle_get(request): if request.method == 'GET': results = {} userna ...

  5. MySQL基础操作1

    1.进入MySQL的两种方式: (1).MySQL自带的控制台 直接输入密码 (2).命令提示符: mysql -uroot -proot 然后再输入密码 MySQL常用指令 ------- 1.启动 ...

  6. C++ 引用、构造函数、移动语义

    1.引用 C++中的引用主要用作函数的形参,接近于const指针,必须在创建时初始化. 以Person类为例,如下: Person p;                          //调用P的 ...

  7. 包建强的培训课程(10):Android插件化从入门到精通

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  8. Kali学习笔记7:三层发现

    三层发现:发送ICMP/IP数据包探测 第一种方式: 就是很简单的Ping命令: 不过linux的ping命令和windows的ping命令不一样,它会默认不停止地发数据包 我们可以通过-c参数来设置 ...

  9. LabVIEW(五):DAQ同步

    1.在许多的测试测量应用当中,我们会需要在通过一个时间段内进行同步测量. 同步采集通常分为两类: (1).同时测量:即不同的任务在同一时刻开始.举例来说,我们会在一个模拟输入通道上采集数据,同时在一个 ...

  10. Oracle和Mysql语法异同整理笔记

    目录 (1) 模糊匹配 (2) 删除数据 (3) 时间函数 (4) 关键字问题 (5) 递归查询 (6) 排序问题 (7) 空值返回0 (8) 取最大值 (9) 列转换函数 (10) 类型转行函数 @ ...