如何提高MySQL INSERT和UPDATE的性能?

时间:2010-03-02 22:12:02

标签: mysql performance innodb

我们数据库中INSERT和UPDATE语句的性能似乎在降低,并导致我们的Web应用程序性能不佳。

表是InnoDB,应用程序使用事务。我是否可以通过任何简单的调整来加快速度?

我想我们可能会看到一些锁定问题,我该如何找到?

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

当带有索引的表上的行数增加时,INSERT和UPDATE会逐渐变慢。对于插入,Innodb表甚至比MyISAM表慢,并且延迟键写选项不可用。

加快速度的最有效方法是先将数据保存到平面文件中然后再LOAD DATA,这大约快20倍。

第二个选项是创建临时内存表,将数据加载到其中,然后批量执行INSERT INTO SELECT。也就是说,一旦你的临时表中有大约100行,就把它们加载到永久表中。

此外,通过将索引文件移动到与存储数据文件的物理硬盘不同的物理硬盘驱动器,可以略微提高速度。还尝试将任何bin日志移动到其他设备。同样适用于临时文件位置。

答案 2 :(得分:1)

我会尝试设置表来延迟索引更新。

ALTER TABLE {name} delay_key_write='1'

答案 3 :(得分:0)

如果您没有使用索引,它们可以帮助提高更新查询的性能。

答案 4 :(得分:0)

除非并发用户数量随着时间的推移而增加,否则我不会考虑锁定/阻止。

如果性能逐渐降低,我会使用EXPLAIN语句查看查询计划。

为了进行比较,从开发或初始生产环境中获取这些结果会很有帮助。

可能需要删除或添加索引, 或其他职位中指定的其他一些维护措施。