本文为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. virtualenv搭建

    1.准备工作 终端 网络状况良好 2.安装虚拟环境 ​ 如何安装虚拟环境: ​ 2.1了解你的电脑中有哪些版本的python whereis python 查看当前系统中有多少跟python有关的命令 ...

  2. Python3--Numpy

    数组的形状是它有多少行和列,上面的数组有5行和5列,所以它的形状是(5,5). itemsize属性是每个项占用的字节数.这个数组的数据类型是int 64,一个int 64中有64位,一个字节中有8位 ...

  3. 学习Python第六天

    今天我们讲讲数据类型中的集合,博客写得有点糙,后续应该要进行优化优化了........ 集合:无序,不重复的数据组合,主要作用:去重,把一个列表变成集合,就自动去重了 基本语法:S = {1}类型为集 ...

  4. ESP32随笔汇总

    版权声明:本文为博主原创文章,未经博主本人不得转载.联系邮箱:mynoticeable@gmail.com 1.ubuntu 14.04下搭建esp32开发环境 2.UBUNTU14.0.4安装ecl ...

  5. AngularJS 关于ng-model和ng-bind还有{{}}

    What's the difference between ng-model and ng-bind ng-bind has one-way data binding ($scope --> v ...

  6. el表达式与<c:foreach>标签的联合各种使用方法记录

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%@ tagl ...

  7. web browser 发展史

    浏览器是指可以显示网页服务器或者文件系统的HTML文件(标准通用标记语言的一个应用)内容,用来显示在万维网或局域网等内的文字.图像及其他信息,便于人们的浏览. Tim Berners-Lee是第一个使 ...

  8. 解决Jenkins安装的时区问题

    正常情况下,jenkins是Java执行在Java容器,比如tomcat容器之下,只要改了tomcat的时区就行.我这里是为了方便后续的代码可用性测试,用的是Ubuntu中apt在线安装,也只是安装了 ...

  9. navicat 几个 可用的东西

    1.常用的 表格 一启动 就进入的某某连接某某数据库某某表 2. 结构 比对(菜单栏 “工具里面”) 3.数据对比 同上 4.保持连接 5.全局查询 在工具中查找 ------在数据库或模式中查找

  10. 用java开发dota英雄最华丽的技能

     爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好的同学欢迎一起研究学习. 先把我的代码呈上 import ...