首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL数以千计的更新,速度变慢

MySQL数以千计的更新,速度变慢
EN

Stack Overflow用户
提问于 2010-04-21 07:05:36
回答 5查看 1.2K关注 0票数 0

我需要运行一个PHP循环100,000次(每次脚本运行大约10,000次),每个循环大约有5次MySQL更新。当我运行这个循环50次时,它需要3秒。当我运行这个循环1000次时,大约需要1300秒。正如你所看到的,随着更多的更新,MySQL的速度变慢了很多。

这是一个更新示例:

代码语言:javascript
复制
mysql_query("UPDATE table SET `row1`=`row1` +1 WHERE `UniqueValue`='5'");

这是由PHP随机生成的,但我可以将其存储在一个变量中,并每隔n个循环运行一次。

有没有办法让MySQL和PHP以一致的速度运行( PHP是否存储隐藏变量?),或者拆分脚本?

注意:我运行这是为了开发的目的,而不是为了生产,所以将只有一台计算机访问数据。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-21 07:18:46

使用prepared statements。它们的两个主要优点之一是重复查询更高效。

票数 1
EN

Stack Overflow用户

发布于 2010-04-21 07:41:39

使用这样的东西应该会加载得更快:

代码语言:javascript
复制
mysql_query("UPDATE table SET `row1`=`row1` + 1 WHERE `UniqueValue` IN (5, ... 10)");

当然,假设您在uniqueValue上有一个索引。您可以使用默认设置创建最大8MB的查询,但现在1MB应该足够了。这将是一个巨大的查询,但速度要快得多。

你也可以暂时完全禁用索引更新,这也会让事情变得更快一些:

代码语言:javascript
复制
ALTER TABLE table DISABLE KEYS;
ALTER TABLE table ENABLE KEYS;
票数 1
EN

Stack Overflow用户

发布于 2010-04-21 07:10:03

关闭auto_commit并在N次之后显式提交事务(如果您正在使用InnoDB表)。

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

https://stackoverflow.com/questions/2679294

复制
相关文章

相似问题

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