MySQL更新表设置count = count +1并发问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL更新表设置count = count +1并发问题相关的知识,希望对你有一定的参考价值。

我需要更新一个表并在每次调用时设置VOTE_COUNT = VOTE_COUNT + 1,比如我有10,000个并发访问数据库并同时执行相同的语句:

UPDATE VOTE SET VOTE_COUNT = VOTE_COUNT + 1;

是否会导致结果不等于10000? (初始计数= 0)

答案

根据mysql / mariadb底层存储引擎,您可能会遇到并发或性能问题。

最好的方法是使用具有事务处理功能的存储引擎 - 这样就不会出现并发问题。

对于使用没有事务处理的存储引擎的情况,它取决于锁定(基于否,行或表)。

没有锁定你可能会遇到并发问题,因为两个更新语句可以同时读取一个值,添加1并将其存储回来 - 因此一个(或多个)更新语句将丢失!因为他们都将存储相同的值。

为每次更新锁定表时,对于并发更新语句,事情会变得非常慢!

以上是关于MySQL更新表设置count = count +1并发问题的主要内容,如果未能解决你的问题,请参考以下文章

MySQL:使用另一个表中的 COUNT 更新表?

Mysql Count之后日期显示最大值

使用mySQL中另一个表中的select结果更新表中的字段

用 php 和 ajax 更新 mysql 表

mysql数据库,sql语句,把一个表中的统计数量,更新到两一个表中

如何更新作为 MySQL 中另一个表的聚合结果的字段?