如何加速MySQL INSERT / UPDATE?

时间:2010-12-07 22:22:38

标签: mysql performance innodb mysql-management filemaker

我有三个大型MySQL表。他们接近200万条记录。其中两个表是InnoDB,目前大小约为500 MB。另一个表是MyISAM,大约是2.5 GB。

我们从FileMaker运行一个导入脚本来插入和更新这些表中的记录,但最近它变得非常慢 - 每小时只插入几百条记录。

如何提高性能以使插入和更新更快地发生?

4 个答案:

答案 0 :(得分:2)

对于INSERT,它可能与您在表上定义的索引有关(它们必须在每次INSERT后更新)。你能发布更多关于它们的信息吗?表上是否设置了触发器?

对于更新它是一个不同的故事,可能是记录更新不是很慢,但找到记录很慢。您是否可以尝试将UPDATE更改为SELECT并查看它是否仍然很慢?如果是,那么您应该调查您的索引。

答案 1 :(得分:2)

对于Innodb表,如果它是可接受的风险,我会考虑更改innodb_flush_log_at_trx_commit级别。 this blog post中的更多细节,以及更多Innodb调整指针。

对于这两个引擎,将INSERT一起批处理可以加快速度。见doc

您运行的是哪个版本的MySQL?新的InnoDB“插件”引擎和具有多个处理器的服务器上的操作并发性有了很多改进。

答案 2 :(得分:2)

从命令行在MySQL上执行时查询是否很慢?

如果您正在使用FileMaker中的Execute SQL脚本步骤,则会在每次调用后连接并断开连接,从而导致执行大量查询时出现严重减速。我们已经让客户切换到我们的JDBC plugin(此处是自我推销免责声明)以避免这种情况,从而导致重大加速。

答案 3 :(得分:0)

事实证明,缓慢的原因来自FileMaker方面。将FileMaker记录导出为CSV并运行INSERT / UPDATE命令可以非常快速地执行。

相关问题