阿里云数据库 MySQL 5.6 版支持通过 TokuDB 存储引擎压缩数据。经过大量测试表明,数据表从 InnoDB 存储引擎转到 TokuDB 存储引擎后,数据量可以减少 80% 到 90%,即 2T 的数据量能压缩到 400G 甚至更低。除了数据压缩外,TokuDB 存储引擎还支持事务和在线 DDL 操作,可以很好兼容运行于 MyISAM 或 InnoDB 存储引擎上的应用。
TokuDB 限制说明
- TokuDB 存储引擎无法支持外键 Foreign Key。
- TokuDB 存储引擎不适用于频繁大量读取的场景。
操作步骤
检查 MySQL 版本,命令如下。
[backcolor=transparent]说明: 当前只有云数据库 MySQL 5.6 版支持 TokuDB 存储引擎,如果版本是 MySQL 5.1 或者 MySQL 5.5,需要先升级到 MySQL 5.6。[backcolor=transparent]SELECT version[backcolor=transparent]();
设置 [backcolor=transparent]loose_tokudb_buffer_pool_ratio 的比例,即 tokudb 占用 tokudb 和 innodb 共用缓存的比例。
- [backcolor=transparent]select[backcolor=transparent] sum[backcolor=transparent]([backcolor=transparent]data_length[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]into[backcolor=transparent] [backcolor=transparent]@all_size[backcolor=transparent] [backcolor=transparent]from[backcolor=transparent] information_schema[backcolor=transparent].[backcolor=transparent]tables [backcolor=transparent]where[backcolor=transparent] engine[backcolor=transparent]=[backcolor=transparent]'innodb'[backcolor=transparent];
- [backcolor=transparent]select[backcolor=transparent] sum[backcolor=transparent]([backcolor=transparent]data_length[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]into[backcolor=transparent] [backcolor=transparent]@change_size[backcolor=transparent] [backcolor=transparent]from[backcolor=transparent] information_schema[backcolor=transparent].[backcolor=transparent]tables [backcolor=transparent]where[backcolor=transparent] engine[backcolor=transparent]=[backcolor=transparent]'innodb'[backcolor=transparent] [backcolor=transparent]and[backcolor=transparent] concat[backcolor=transparent]([backcolor=transparent]table_schema[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'.'[backcolor=transparent],[backcolor=transparent] table_name[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]in[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]'XX.XXXX'[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'XX.XXXX'[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]'XX.XXXX'[backcolor=transparent]);[backcolor=transparent]
- [backcolor=transparent]select[backcolor=transparent] round[backcolor=transparent]([backcolor=transparent]@change_size[backcolor=transparent]/[backcolor=transparent]@all_size[backcolor=transparent]*[backcolor=transparent]100[backcolor=transparent]);
其中,[backcolor=transparent]XX.XXXX 为需要转化成 TokuDB 存储引擎的数据库和表名。
重启实例。
操作步骤请参见
重启实例。
修改存储引擎。
- [backcolor=transparent]ALTER TABLE XX[backcolor=transparent].[backcolor=transparent]XXXX ENGINE[backcolor=transparent]=[backcolor=transparent]TokuDB
其中,[backcolor=transparent]XX.XXXX 为需要转化成 TokuDB 存储引擎的数据库和表名。
您也可以登录 DMS 修改数据表存储引擎,具体操作请参见
DMS 产品文档。