Mysql 计数器系统并发控制中的RDBMS与NoSQL

Mysql 计数器系统并发控制中的RDBMS与NoSQL,mysql,concurrency,locking,counter,nosql,Mysql,Concurrency,Locking,Counter,Nosql,我目前有一个计数器系统,使用Mysql和乐观锁定实现。因此,当有多个并发进程访问数据库中的同一行以增加事务中的计数器时,其中一些进程将失败,从而导致总体计数不正确。 使用悲观锁定解决了这个问题,但大大降低了性能,因此不可用。 当查看NoSQL选项时,例如。redis,canandra,我想知道他们是否支持这些并发控制?如果是这样的话,他们的性能是否比他们的RDBMS计数器更高? NoSQL以存储和更新计数器而闻名,但它如何处理并发性,使其具有比RDBMS更多或更少的数据完整性?您可能想了解一下。

我目前有一个计数器系统,使用Mysql和乐观锁定实现。因此,当有多个并发进程访问数据库中的同一行以增加事务中的计数器时,其中一些进程将失败,从而导致总体计数不正确。 使用悲观锁定解决了这个问题,但大大降低了性能,因此不可用。 当查看NoSQL选项时,例如。redis,canandra,我想知道他们是否支持这些并发控制?如果是这样的话,他们的性能是否比他们的RDBMS计数器更高?
NoSQL以存储和更新计数器而闻名,但它如何处理并发性,使其具有比RDBMS更多或更少的数据完整性?

您可能想了解一下。TL;DR版本:快速、一致、分布式:选择任意两个。您最终选择了哪一个选项?您指的是程序中的计数器还是数据库中的计数器?在程序中,您可以使用原子计数器,即Golang中的sync/atomic包或Java中的AtomicInteger。通常,这些低级库在引擎盖下使用汇编指令,以确保在原子函数调用期间只有1个CPU内核可以访问RAM。许多数据库支持计数器,但最终归结为锁定或单线程无并发。例如,Redis运行单线程事件循环。