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并发问题的主要内容,如果未能解决你的问题,请参考以下文章