首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加速tokudb "alter table ... engine=TokuDB“

加速tokudb "alter table ... engine=TokuDB“
EN

Stack Overflow用户
提问于 2012-10-08 03:09:33
回答 2查看 2.8K关注 0票数 3

我正在尝试将一个4亿行的Innodb表转换为tokudb引擎。当我开始使用"alter table ... engine=TokuDB"时,一开始运行得非常快(使用SHOW PROCESSLIST),我看到它每10秒读取大约一百万行。但是,一旦我达到大约1900万到2000万行,它就开始减慢读取速度,更像是每隔几秒钟读取10k行。

是否有任何mysql或tokudb变量会影响ALTER TABLE to tokudb的工作速度?我尝试了tmp_table_size和其他一些,但似乎无法通过这个障碍。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-09 03:42:57

以下是重要变量,请确保在开始操作之前对它们进行全局设置,或者在执行存储引擎更改的会话中进行本地设置:

space.

  • tokudb_cache_size :如果不设置,TokuDB将分配50%的
  • tokudb_load_save_space用于它自己的缓存机制,我们通常建议不使用此设置。当您在现有服务器上运行时,需要确保没有在TokuDB、InnoDB和MyISAM之间过度使用内存。
票数 3
EN

Stack Overflow用户

发布于 2013-06-24 08:09:35

对我来说,解决这个问题的方法是导出“to outfile”并导入"load data infile“

这对我来说快了几个数量级(1.1亿条记录)。每次我修改一个大型tokudb数据库(alter table)时,都会花费很长时间(大约30k/秒)。更快地完全导出和导入(约500k/秒)将alter table时间从几小时减少到几分钟。

从innodb转换或更改本地tokudb (任何alter table)时都是如此。

代码语言:javascript
复制
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_lzmatokudb_uncompressed创建表)。你可以快速尝试3种方法(你需要做一个操作系统级别的目录ls来查看大小)。我发现离线索引也有帮助。

代码语言:javascript
复制
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,非常高兴。

希望这能在实验时帮助其他人。显然,对于最初的发问者来说已经很晚了。唯一存在的回应对我来说根本不是建设性的。(问题是)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12771932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档