我正在尝试将一个4亿行的Innodb表转换为tokudb引擎。当我开始使用"alter table ... engine=TokuDB"时,一开始运行得非常快(使用SHOW PROCESSLIST),我看到它每10秒读取大约一百万行。但是,一旦我达到大约1900万到2000万行,它就开始减慢读取速度,更像是每隔几秒钟读取10k行。
是否有任何mysql或tokudb变量会影响ALTER TABLE to tokudb的工作速度?我尝试了tmp_table_size和其他一些,但似乎无法通过这个障碍。
有什么想法吗?
发布于 2012-10-09 03:42:57
以下是重要变量,请确保在开始操作之前对它们进行全局设置,或者在执行存储引擎更改的会话中进行本地设置:
space.
发布于 2013-06-24 08:09:35
对我来说,解决这个问题的方法是导出“to outfile”并导入"load data infile“
这对我来说快了几个数量级(1.1亿条记录)。每次我修改一个大型tokudb数据库(alter table)时,都会花费很长时间(大约30k/秒)。更快地完全导出和导入(约500k/秒)将alter table时间从几小时减少到几分钟。
从innodb转换或更改本地tokudb (任何alter table)时都是如此。
select a.*,calcfields from table1 a into outfile 'temp.txt';
create table table2 .....<br>
load data infile 'temp.txt' into table table2 (field1,field2,...);ps:尝试使用row_format=tokudb_lzma或tokudb_uncompressed创建表)。你可以快速尝试3种方法(你需要做一个操作系统级别的目录ls来查看大小)。我发现离线索引也有帮助。
set tokudb_create_index_online=off;
create clustering index field1 on table2(field1); (much faster)当您了解何时使用多个集群索引时,它们会产生很大的不同。
我使用GUI工具来修改索引更改的表(每次等待几个小时),手动做这件事会让事情变得更有效率(我花了几天时间通过GUI什么也没做,只需要30分钟就能完成)
使用5.5.30-tokudb-7.0.1-MariaDB,非常高兴。
希望这能在实验时帮助其他人。显然,对于最初的发问者来说已经很晚了。唯一存在的回应对我来说根本不是建设性的。(问题是)
https://stackoverflow.com/questions/12771932
复制相似问题