首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL加载数据加密-加速?

MySQL加载数据加密-加速?
EN

Stack Overflow用户
提问于 2010-03-17 23:35:42
回答 3查看 34K关注 0票数 32

有时,我必须为项目重新导入数据,从而将大约360万行读取到MySQL表中(目前是InnoDB,但我实际上并不局限于此引擎)。“加载数据文件...”已经被证明是最快的解决方案,但是它有一个权衡:-当不使用密钥导入时,导入本身需要大约45秒,但密钥创建需要很长时间(已经运行了20分钟...)。-使用表上的键进行导入会使导入速度变慢

表中有超过3个字段的键,引用了数字字段。有什么方法可以加速这一过程吗?

另一个问题是:当我终止启动了一个慢查询的进程时,它继续在数据库上运行。有没有办法在不重启mysqld的情况下终止查询?

非常感谢DBa

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-24 06:54:24

如果你正在使用innodb和批量加载,这里有一些提示:

按照目标表的主键顺序对csv文件进行排序:请记住,innodb使用聚集的主键,因此如果排序,加载速度会更快!

我使用的典型负载数据文件如下:

代码语言:javascript
复制
truncate <table>;

set autocommit = 0;

load data infile <path> into table <table>...

commit;

可以用来加快加载时间的其他优化:

代码语言:javascript
复制
set unique_checks = 0;
set foreign_key_checks = 0;
set sql_log_bin=0;

将csv文件拆分为更小的块

我在批量加载过程中观察到的典型导入统计数据如下:

代码语言:javascript
复制
3.5 - 6.5 million rows imported per min
210 - 400 million rows per hour
票数 53
EN

Stack Overflow用户

发布于 2010-03-18 03:25:36

这篇博文已经快3年了,但它仍然是相关的,并为优化"LOAD DATA INFILE“的性能提供了一些很好的建议:

http://www.mysqlperformanceblog.com/2007/05/24/predicting-how-long-data-load-would-take/

票数 7
EN

Stack Overflow用户

发布于 2013-03-13 20:23:53

InnoDB是一个相当好的引擎。然而,它高度依赖于“调优”。一件事是,如果您的插入不是按照主键递增的顺序进行的,那么innoDB可能会比MyISAM花费更长的时间。这可以通过设置更高的innodb_buffer_pool_size轻松克服。我的建议是在一台专用的MySQL机器上将其设置为总内存的60-70%。

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

https://stackoverflow.com/questions/2463602

复制
相关文章

相似问题

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