《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数据库下面我们看一下区别:
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)
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数据库从以上报错可以看出来不支持压缩.但看一下表布局如下:
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数据库这个是比拟坑的地方,所以在使用压缩需要注意.
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数据库创立支持压缩的表:
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数据库看一下表的物理年夜小如下:
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学院为您提供专业教程。