gpt4 book ai didi

mysql - 加速tokudb "alter table ... engine=TokuDB”

转载 作者:可可西里 更新时间:2023-11-01 07:53:29 25 4
gpt4 key购买 nike

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

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

有什么想法吗?

最佳答案

我的解决方案是导出“到输出文件”并导入“加载数据到文件”

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

从 innodb 转换或更改 native tokudb(任何更改表)时都是如此。

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 以查看大小)。我发现离线索引也有帮助。

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 并且非常开心。

希望这可以在实验时帮助其他人。对于原始提问者来说显然已经很晚了。唯一存在的回应对我来说根本没有建设性。 (问题是)

关于mysql - 加速tokudb "alter table ... engine=TokuDB”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com