在微博上看到隔壁部门的同事发布了一个介绍MySQL 5.6新特性的slide。遂对其中几个对我们业务有用的特性做了测试。
Found a slide which introducing new features in MySQL 5.6, which is made by a colleague in other department. For our business, I ran some tests on some features.
- InnoDB Compression
//压缩前(before compress)
Name: workticket
Engine: InnoDB
Version: 10
Row_format: Compact
Rows: 1471830
Avg_row_length: 328
Data_length: 483295232
Max_data_length: 0
Index_length: 260276224
Data_free: 5242880
Auto_increment: 3473533
Create_time: 2013-04-15 16:01:01
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment: 工单表
//压缩后(after compress)
Name: workticket
Engine: InnoDB
Version: 10
Row_format: Compressed
Rows: 1553544
Avg_row_length: 143
Data_length: 222281728
Max_data_length: 0
Index_length: 121192448
Data_free: 2621440
Auto_increment: 3473533
Create_time: 2013-04-15 16:06:33
Update_time: NULL
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options: row_format=COMPRESSED
Comment: 工单表
但还是不够myisampack后的myisam省空间
But InnoDB Compression is less storage efficient than MyISAM after myisampack.
-rw-rw---- 1 mysql mysql 9.5K Apr 16 09:35 workticket.frm -rw-rw---- 1 mysql mysql 9.5K Apr 16 09:45 workticket_innodb.frm -rw-rw---- 1 mysql mysql 336M Apr 16 09:58 workticket_innodb.ibd -rw-rw---- 1 mysql mysql 199M Apr 16 09:41 workticket.MYD -rw-rw---- 1 mysql mysql 86M Apr 16 09:44 workticket.MYI
Name: workticket Engine: MyISAM Version: 10 Row_format: Dynamic Rows: 1593851 Avg_row_length: 201 Data_length: 321325744 Max_data_length: 281474976710655 Index_length: 130242560 Data_free: 0 Auto_increment: 3473533 Create_time: 2013-04-16 09:35:53 Update_time: 2013-04-16 09:41:09 Check_time: 2013-04-16 09:37:03 Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 工单表
- InnoDB Online DDL
mysql> ALTER TABLE `workticket` ADD COLUMN `test_col` INT NOT NULL AFTER sid, LOCK=NONE; Query OK, 0 rows affected (5 min 25.17 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> set old_alter_table=1; Query OK, 0 rows affected (0.00 sec) mysql> ALTER TABLE `workticket` ADD COLUMN `test_col` INT NOT NULL AFTER sid, LOCK=NONE; ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED. mysql> ALTER TABLE `workticket` ADD COLUMN `test_col` INT NOT NULL AFTER sid, LOCK=SHARED; Query OK, 1593851 rows affected (4 min 11.89 sec) Records: 1593851 Duplicates: 0 Warnings: 0
虽然总体耗时更长,但DDL过程中不锁表(可query and/or 可DML)还是很吸引的(详细的DDL操作是否可query and/or 可DML可参见文档)。
Although costing more time, that the table can be query and/or execute DML query is very amazing. (Detail can be seen in documentation)
- InnoDB-Transportable Tablespaces
没什么可测试的,就是操作成功。用途?建slave?备份?
Nothing interesting to test. It just works. What can I do with this feature? Maybe building up a slave server? Or backup up the database?