《MYSQL数据库MySQL Antelope和Barracuda的区别分析》要点: 本文介绍了MYSQL数据库MySQL Antelope和Barracuda的区别分析,希望对您有用。如果有疑问,可以联系我们。
MYSQL数据库Antelope是innodb-base的文件格局,Barracude是innodb-plugin后引入的文件格局,同时Barracude也支持Antelope文件格局.两者区别在于:
|
文件格局
支持行格局
特性
Antelope
MYSQL数据库(Innodb-base)
ROW_FORMAT=COMPACT
MYSQL数据库ROW_FORMAT=REDUNDANT
Compact和redumdant的区别在便是在于首部的存存内容区别.
MYSQL数据库compact的存储格式为首部为一个非NULL的变长字段长度列表
MYSQL数据库redundant的存储格局为首部是一个字段长度偏移列表(每个字段占用的字节长度及其相应的位移).
MYSQL数据库在Antelope中对于变长字段,低于768字节的,不会进行overflow page存储,某些情况下会减少成果集IO.
Barracuda
MYSQL数据库(innodb-plugin)
ROW_FORMAT=DYNAMIC
MYSQL数据库ROW_FORMAT=COMPRESSED
MYSQL数据库?
这两者主要是功能上的区别功能上的. 另外在行里的变长字段和Antelope的区别是只存20个字节,其它的overflow page存储.
MYSQL数据库另外这两都必要开启innodb_file_per_table=1
MYSQL数据库(这个特性对一些优化照样很有用的)
MYSQL数据库备注:
MYSQL数据库这里有一点需要注意,如果要使用压缩,必定需要先使用innodb_file_format =Barracuda格式,不然没作用.
MYSQL数据库下面我们看一下区别:
代码如下:
(testing)root@localhost [(none)]> use wubx;
MYSQL数据库Database changed
MYSQL数据库(testing)root@localhost [wubx]> CREATE TABLE t1
MYSQL数据库->? (c1 INT PRIMARY KEY)
MYSQL数据库->? ROW_FORMAT=COMPRESSED
MYSQL数据库->? KEY_BLOCK_SIZE=8;
MYSQL数据库Query OK,0 rows affected,4 warnings (0.01 sec)
报出来4个warnings查看一下报错:
代码如下:
(testing)root@localhost [wubx]> show warnings;
MYSQL数据库+―――+――+―――――――――――――――――――――――C+
MYSQL数据库| Level?? | Code | Message?????????????????????????????????????????????????????????????? |
MYSQL数据库+―――+――+―――――――――――――――――――――――C+
MYSQL数据库| Warning | 1478 | InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.??????? |
MYSQL数据库| Warning | 1478 | InnoDB: ignoring KEY_BLOCK_SIZE=8.??????????????????????????????????? |
MYSQL数据库| Warning | 1478 | InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |
MYSQL数据库| Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT.????????????????????????????????? |
MYSQL数据库+―――+――+―――――――――――――――――――――――C+
MYSQL数据库4 rows in set (0.00 sec)
MYSQL数据库从以上报错可以看出来不支持压缩.但看一下表布局如下:
代码如下:
(testing)root@localhost [wubx]> show create table t1;
MYSQL数据库+――-+―――――――――――――――――――――――――――――――――――――――――――――――C+
MYSQL数据库| Table | Create Table????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? |
MYSQL数据库+――-+―――――――――――――――――――――――――――――――――――――――――――――――C+
MYSQL数据库| t1??? | CREATE TABLE t1 (
MYSQL数据库c1 int(11) NOT NULL,
MYSQL数据库PRIMARY KEY (c1)
MYSQL数据库) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 |
MYSQL数据库+――-+―――――――――――――――――――――――――――――――――――――――――――――――C+
MYSQL数据库1 row in set (0.00 sec)
MYSQL数据库这个是比拟坑的地方,所以在使用压缩需要注意.
代码如下:
(testing)root@localhost [wubx]>create table t2 ( c1 int(11) NOT NULL,primary key(c1));
MYSQL数据库(testing)root@localhost [wubx]> insert into t2 select * from t1;
MYSQL数据库Query OK,5417760 rows affected (37.12 sec)
MYSQL数据库Records: 5417760? Duplicates: 0? Warnings: 0
MYSQL数据库创立支持压缩的表:
代码如下:
(testing)root@localhost [wubx]>SET GLOBAL innodb_file_per_table=1
MYSQL数据库(testing)root@localhost [wubx]>SET GLOBAL innodb_file_format=Barracuda;
MYSQL数据库(testing)root@localhost [wubx]>CREATE TABLE t3
MYSQL数据库(c1 INT PRIMARY KEY)
MYSQL数据库ROW_FORMAT=COMPRESSED
MYSQL数据库KEY_BLOCK_SIZE=8;
MYSQL数据库(testing)root@localhost [wubx]> insert into t3 select * from t1;
MYSQL数据库Query OK,5417760 rows affected (1 min 10.98 sec)
MYSQL数据库Records: 5417760? Duplicates: 0? Warnings: 0
MYSQL数据库看一下表的物理年夜小如下:
代码如下:
-rw-rw―- 1 mysql mysql 8.4K Jul? 5 16:58 t1.frm
MYSQL数据库-rw-rw―- 1 mysql mysql 136M Jul? 5 19:40 t1.ibd
MYSQL数据库-rw-rw―- 1 mysql mysql 8.4K Jul? 5 19:43 t2.frm
MYSQL数据库-rw-rw―- 1 mysql mysql 136M Jul? 5 19:44 t2.ibd
MYSQL数据库-rw-rw―- 1 mysql mysql 8.4K Jul? 5 19:46 t3.frm
MYSQL数据库-rw-rw―- 1 mysql mysql? 96M Jul? 5 19:47 t3.ibd
MYSQL数据库可见t1,t2都没进行紧缩, t3是支持紧缩的.
欢迎参与《MYSQL数据库MySQL Antelope和Barracuda的区别分析》讨论,分享您的想法,编程之家PHP学院为您提供专业教程。
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!