Antelope 和Barracuda區別
Antelope是innodb-base的檔案格式, Barracude是innodb-plugin後引入的檔案格式,同時Barracude也支援Antelope檔案格式。兩者區別在於:
檔案格式 | 支援行格式 | 特性 |
Antelope
(Innodb-base) |
ROW_FORMAT=COMPACT
ROW_FORMAT=REDUNDANT |
Compact和redumdant的區別在就是在於首部的存存內容區別。
compact的儲存格式為首部為一個非NULL的變長欄位長度列表 redundant的儲存格式為首部是一個欄位長度偏移列表(每個欄位佔用的位元組長度及其相應的位移)。 在Antelope中對於變長欄位,低於768位元組的,不會進行overflow page儲存,某些情況下會減少結果集IO. |
Barracuda
(innodb-plugin) |
ROW_FORMAT=DYNAMIC
ROW_FORMAT=COMPRESSED
|
這兩者主要是功能上的區別功能上的。 另外在行裡的變長欄位和Antelope的區別是隻存20個位元組,其它的overflow page儲存。
另外這兩都需要開啟innodb_file_per_table=1 (這個特性對一些最佳化還是很有用的) |
備註:
這裡有一點需要注意,如果要使用壓縮,一定需要先使用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是支援壓縮的。
轉自:http://wubx.net/antelope-vs-barracuda/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28939273/viewspace-1876240/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 和區別
- ../和./和/的區別
- if …if 和if …else if 區別
- 和 的區別
- as 和 with的區別
- in 和 exists區別
- ||和??的區別
- /*和/**的區別
- LinkedList和ArrayList的區別、Vector和ArrayList的區別
- http和https的區別/get和post的區別HTTP
- undefined 和 null 區別?UndefinedNull
- SSL和TLS 區別TLS
- ./ 和sh 的區別
- JQuery this和$(this)的區別jQuery
- jquery $(this) 和this的區別jQuery
- ClassNotFoundException和NoClassDefFoundError區別ExceptionError
- T和?的區別
- SCSS 和 SASS 區別CSS
- innerHTML 和 innerTEXT 區別HTML
- null和undefined區別NullUndefined
- url和uri區別
- get和post區別
- ++a和a++的區別
- NoClassDefFoundError和ClassNotFoundException區別ErrorException
- $(":input")和$("input")區別
- $(document)和$(window)區別
- input和textarea區別
- localStorage和sessionStorage區別Session
- Session 和 Cookie 區別SessionCookie
- jQuery not()和filter()區別jQueryFilter
- define和defined區別
- restore和recover 區別REST
- memcache和redis區別Redis
- a :hover 和a:hover 區別
- Forword和SendRedirect區別
- rbegin 和 end 區別
- setImageResource和setImageDrawable區別
- Opensturt和Struct區別Struct