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