• 1
  • 2
  • 3
  • 4
  • 5
mysql数据库问题 首 页  »  帮助中心  »  数据库  »  mysql数据库问题
Mysql数据库:Antelope 与Barracuda的区别
发布日期:2016-4-20 22:4:54

  Mysql数据库:Antelope 与Barracuda的区别

  Antelope是innodb-base的文件格式, Barracude是innodb-plugin后引入的文件格式,同时Barracude也支持Antelope文件格式。两者区别在于:

  

  

  备注:

  这里有一点需要注意,如果要使用压缩,一定需要先使用innodb_file_format =Barracuda格式,不然句没有作用。

  下面我们看一下区别:

  (testing)root@localhost [(none)]> use wubx;

  Database changed

  (testing)root@localhost [wubx]> CREATE TABLE t1

  -> (c1 INT PRIMARY KEY)

  -> ROW_FORMAT=COMPRESSED

  -> KEY_BLOCK_SIZE=8;

  Query OK, 0 rows affected, 4 warnings (0.01 sec)

  报出来4个warnings查看一下报错:

  (testing)root@localhost [wubx]> show warnings;

  +———+——+———————————————————————–+

  | Level | Code | Message |

  +———+——+———————————————————————–+

  | Warning | 1478 | InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope. |

  | Warning | 1478 | InnoDB: ignoring KEY_BLOCK_SIZE=8. |

  | Warning | 1478 | InnoDB: ROW_FORMAT=COMPRESSED requires innodb_file_format > Antelope. |

  | Warning | 1478 | InnoDB: assuming ROW_FORMAT=COMPACT. |

  +———+——+———————————————————————–+

  4 rows in set (0.00 sec)

  从以上报错可以看出来不支持压缩。但看一下表结构如下所示:

  (testing)root@localhost [wubx]> show create table t1;

  +——-+———————————————————————————————————————————————–+

  | Table | Create Table |

  +——-+———————————————————————————————————————————————–+

  | t1 | CREATE TABLE t1 (

  c1 int(11) NOT NULL,

  PRIMARY KEY (c1)

  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 |

  +——-+———————————————————————————————————————————————–+

  1 row in set (0.00 sec)

  这个是比较坑的地方,所以在使用压缩需要注意。

  (testing)root@localhost [wubx]>create table t2 ( c1 int(11) NOT NULL, primary key(c1));

  (testing)root@localhost [wubx]> insert into t2 select * from t1;

  Query OK, 5417760 rows affected (37.12 sec)

  Records: 5417760 Duplicates: 0 Warnings: 0

  创建支持压缩的表:

  (testing)root@localhost [wubx]>SET GLOBAL  innodb_file_per_table=1

  (testing)root@localhost [wubx]>SET GLOBAL innodb_file_format=Barracuda;

  (testing)root@localhost [wubx]>CREATE TABLE t3

  (c1 INT PRIMARY KEY)

  ROW_FORMAT=COMPRESSED

  KEY_BLOCK_SIZE=8;

  (testing)root@localhost [wubx]> insert into t3 select * from t1;

  Query OK, 5417760 rows affected (1 min 10.98 sec)

  Records: 5417760 Duplicates: 0 Warnings: 0

  看一下表的物理大小如下:

  -rw-rw—- 1 mysql mysql 8.4K Jul 5 16:58 t1.frm

  -rw-rw—- 1 mysql mysql 136M Jul 5 19:40 t1.ibd

  -rw-rw—- 1 mysql mysql 8.4K Jul 5 19:43 t2.frm

  -rw-rw—- 1 mysql mysql 136M Jul 5 19:44 t2.ibd

  -rw-rw—- 1 mysql mysql 8.4K Jul 5 19:46 t3.frm

  -rw-rw—- 1 mysql mysql 96M Jul 5 19:47 t3.ibd

  可见t1, t2都没进行压缩, t3是支持压缩的。