【发布时间】:2017-10-06 06:30:55
【问题描述】:
我有一个带有 MariaDB 服务器的 nodejs Web 服务,并且我的应用中有大约 500 个每日活跃用户。
在我的代码中,我使用如下事务:
START TRANSACTION
-- select to find out the existence of a row --
-- if the row doesn't exist, a new row inserted --
COMMIT
此事务应该不会插入重复的行,但事实并非如此。
我认为这发生在具有不同会话的 2 个请求同时到达并看到该行不存在然后两个会话都插入它时。
MariaDB 事务隔离级别是 REPEATABLE-READ。
这是因为 REPEATABLE READ 隔离级别吗?
当另一个会话可能读取同一行时,如何独占锁定读取和写入?
【问题讨论】:
标签: transactions locking mariadb isolation-level