## TokuDB简介 TokuDB是一个支持事务的“新”引擎,有着出色的数据压缩功能,由美国TokuTek公司(http://www.tokutek.com/) 研发,该公司于2015年4月份被Percona收购。 为了降低用户数据存储成本,云数据库(Aliyun RDS)增加了TokuDB引擎支持(MySQL5.6版本)。 ### TokuDB引擎有什么优点 出色的数据压缩功能,较低的IOPS消耗,如果您的数据量比较大,强烈建议您使用TokuDB,以节省空间成本,而且有着与InnoDB相当的性能。 ### 使用TokuDB引擎有什么注意点 不支持外键(foreign key)功能,如果您的表有外键,切换到TokuDB引擎后,此约束将被忽略!!! ### 阿里云RDS中TokuDB的buffer pool size如何分配 我们提供了tokudb_buffer_pool_ratio参数(下图),作用是调整TokuDB的buffer pool(与InnoDB共享)分配比例,这个参数的意思是TokuDB占用buffer pool的百分比。 ![User-ratio](https://oss.showapi.com/doc/2096/189/a8ab811c-8877-4e59-8eaa-85414c15806c.png) 小提醒:  如果您是TokuDB用户,建议把这个参数设置成100,表示TokuDB将使用全部buffer pool; 如果您是InnoDB用户,请忽略此参数,默认为InnoDB使用全部buffer pool。 ### 阿里云RDS中如何使用TokuDB引擎 1. 第一种方法是在DDL语句中指定表的引擎: 建新表: ~~~ CREATE TABLE ... ENGINE=TokuDB; ~~~ 更改引擎: ~~~ ALTER TABLE ... ENGINE=TokuDB; ANALYZE TABLE ...; ~~~ 2. 第二种方法是通过IDB工具指定表引擎为TokuDB: ![Idb-engine](https://oss.showapi.com/doc/2096/189/eef7e17f-51db-435c-9794-171027034194.png) 3. 第三种方法(推荐): 设置default_storage_engine为TokuDB后,表引擎默认为TokuDB。(注意:此设置需要重启) ![User-default-engine](https://oss.showapi.com/doc/2096/189/0cb898db-d3f4-4719-b30b-127a7ec34651.png) ### 阿里云RDS中TokuDB表的热备 RDS备份功能已完全支持TokuDB引擎,当您在做备份的时候,会自动备份TokuDB表。 ### 阿里云RDS中如何修改TokuDB引擎的压缩算法 1. 第一种方法是在client中指定row_format: ~~~ CREATE/ALTER TABLE ... ENGINE=TokuDB ROW_FORMAT=[压缩算法]; ~~~ 2. 第二种方法是通过IDB工具指定: ![Idb-compress](https://oss.showapi.com/doc/2096/189/8135b5d5-b563-4808-8049-7a491def9db3.png) ### TokuDB的压缩算法如何选择 1. tokudb_zlib:表启用zlib压缩,压缩效果偏中,CPU消耗偏中,建议使用(默认); 2. tokudb_quicklz:表启用quicklz压缩,压缩效果差,CPU消耗低; 3. tokudb_lzma:表启用lzma压缩,压缩效果好,CPU消耗高。 TokuDB默认压缩算法为zlib,建议您不要做修改,因为zlib压缩的性价比非常高。