Heim >Backend-Entwicklung >PHP-Tutorial >高并发下,对一个表的操作insert update delete,update会失败是什么情况?

高并发下,对一个表的操作insert update delete,update会失败是什么情况?

WBOY
WBOYOriginal
2016-06-06 20:49:051456Durchsuche

如标题 具体对一个表的操作如下

一个访问会包含三次操作

  1. 用户提交数据insert到一个临时表a
  2. 根据业务逻辑判断后,update的其中一个字段为3
  3. insert临时表处理后的数据到正式表b,删除临时数据

最近发现提交过于频繁的时候update操作会失败,更新无效

请问这个是什么情况下造成的,有什么解决办法么?和锁是否有关?

回复内容:

如标题 具体对一个表的操作如下

一个访问会包含三次操作

  1. 用户提交数据insert到一个临时表a
  2. 根据业务逻辑判断后,update的其中一个字段为3
  3. insert临时表处理后的数据到正式表b,删除临时数据

最近发现提交过于频繁的时候update操作会失败,更新无效

请问这个是什么情况下造成的,有什么解决办法么?和锁是否有关?

看你的临时表是什么引擎,如果是MyISAM的,建议你不要每次处理完后删除,可以给行增加一个列表明状态,然后定期删掉。

另外,insert/update/delete MyISAM引擎都会锁表,所以其他的操作都会阻塞,然后你的数据库配置了阻塞超时时间的话,可能会update失败。

我也不建议用innodb,除非你配置了 innodb_table_per_file=1。

第一个建议: 不要把临时数据放入数据库表,可以考虑放在缓存系统中。

第二个建议: 定时清理无效的数据.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn