问题标签 [isolation-level]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2968 浏览

mysql - 具有 innodb 和可序列化事务的 Mysql 不会(总是)锁定行

我与 aSELECT和 possible进行了交易INSERT。出于并发原因,我添加FOR UPDATESELECT. 为了防止出现幻行,我使用了SERIALIZABLE事务隔离级别。当表中有任何行时,这一切都可以正常工作,但如果表为空则不行。当表为空时,SELECT FOR UPDATE不执行任何(排他性)锁定,并发线程/进程可以发出相同的问题SELECT FOR UPDATE而不会被锁定。

这个概念在 SQL Server 上可以正常工作,但在 MySQL 上不行。关于我做错了什么的任何想法?

编辑

在 display_order 上添加索引不会改变行为。

0 投票
2 回答
3078 浏览

database - READ_UNCOMMITTED vs 没有交易?

在事务之外执行 SQL 与在 READ_UNCOMMITTED 隔离模式下执行 SQL 有什么区别?

澄清:我试图了解java.sql.Connection.TRANSACTION_NONEjava.sql.Connection.TRANSACTION_READ_UNCOMMITTED之间的区别

0 投票
2 回答
175 浏览

mysql - 在单个字段上可靠地减少/增加所需的隔离级别

假设我们有一个如下表,

我们有多个用户在指定时间段内(例如 2 小时)移除兔子。(所以最少0个兔子,最多1000个兔子,兔子被退回,不是用户添加的)

我正在使用两个基本的事务查询,例如

当有人归还兔子时,

当有人试图带走兔子时。我假设这些查询将在引擎盖下实现某种原子性

用户必须不能比每个国家/地区拥有更多的兔子(即,如果 23 个用户同时交易,则 -23 个兔子)

我的问题是,在这种情况下我如何保持 ACID 安全,同时能够同时添加/递增/递减 bunnies 字段,同时保持在范围内(0-1000)我可以将隔离级别设置为序列化,但我我担心这会影响性能。

有小费吗?提前致谢

0 投票
2 回答
186 浏览

database - 数据库中的隔离级别

我理解隔离级别的概念。但是你如何设置它以及在哪里?我从来没有在java程序中看到过这个问题。

0 投票
1 回答
8405 浏览

transactions - 如何获取 DB2 上的当前隔离级别?

我正在尝试了解事务在 DB 中的工作方式,为此我编写了以下测试 SQL:

执行此代码后,将一行添加到表中。但是,如果我在开头添加以下行:

一切都按我的预期工作,即事务正确回滚并且数据库中没有新条目,但是如果我再次运行此代码,Data Studio 会在第一行显示错误:

所以我的问题是:有没有办法获得当前的隔离级别,为什么我不能设置隔离级别超过 1 次?

我将非常感谢所有答案和链接。

PS。我正在使用 DB2/iSeries V5R4。

聚苯乙烯。对不起,我的英语不好

0 投票
1 回答
2195 浏览

hibernate - JBoss TreeCache 作为二级 Hibernate 缓存的并发策略配置

我正在使用 JBoss EAP 4.3。

当使用内置的 JBoss TreeCache 作为 Hibernate 的二级缓存时,我目前正在研究并发策略的不同选项。我已经设置了它,并且通过查看日志验证了缓存是否正常工作,但我不确定真正使用了什么并发策略以及它是如何工作的。

@Cache对于每个实体,我可以在注释中设置以下“使用”值之一: NONE, READ_ONLY, NONSTRICT_READ_WRITE, READ_WRITE, TRANSACTIONAL

另一方面,在我的JBossTreeCache配置文件中,我可以将IsolationLevel整个缓存设置为以下之一:NONE, READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE(或仅使用OPTIMISTIC)。

一次查看一个配置选项时,文档非常清楚,但我想知道当您组合不同的选项时会发生什么。

例如,如果您@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)为实体设置但配置NONEIsolationLevelJBossTreecache会发生什么?

我也相信JBossTreeCache只支持NONE,READ_ONLYTRANSACTIONAL使用,但IsolationLevel你可以将它们与什么结合起来?如果你使用例如会发生什么NONSTRICT_READ_WRITE

这里总共应该有 5x6 不同的组合,但并非所有组合都有意义..

谁能帮我解决这个问题?

0 投票
1 回答
9461 浏览

spring - 在基于 Spring 注释的事务中设置隔离级别

我在我的项目中使用基于注释的事务管理(我用@Transactional 注释了一些方法)。我想全局设置隔离级别(而不是将其作为每个 @Transactional 注释的参数)。

是否可以在 XML 中进行配置?目前我的 xml 配置包含

是否可以以某种方式将隔离添加到 tx:annotation-driven?

0 投票
2 回答
8997 浏览

sql - SQL Server:如何获取排他锁以防止竞争条件?

我有以下 T-SQL 代码:

我正在使用标有注释的“锁定”黑客来获取排他锁。

注意:使用 TABLOCKX 或 UPDLOCK 提示将不起作用,因为我通过拆分语句并在中间添加 WAITFOR 命令来破坏原子性以进行测试。我不想要这样的东西:

这是运行两个同时会话后的正确结果(带锁表)

这是在注释掉锁的情况下运行代码的错误结果

有没有更好的方法来获取事务范围的独占锁而没有这种黑客攻击?

0 投票
1 回答
21823 浏览

mysql - 在 mysql 中查看查询的隔离级别

如何确定给定查询使用的隔离级别?执行查询后(由第 3 方应用程序),我想知道使用了哪个隔离级别(例如,未提交的读取)。

需要明确的是,我目前正在开发一个使用 EF4 对 mysql 5.1 运行的应用程序。我正在尝试测试不同的编码模式以更改特定 EF4 查询的隔离级别。我需要能够测试并确保隔离级别设置正确。

0 投票
1 回答
9873 浏览

c# - 如何在 SQLite 中将事务隔离级别设置为 ReadUncommitted?

根据这篇文章的答案,它指出:

您是否知道除非您启用了共享缓存并且两个连接都来自同一个线程,否则 ReadUncommitted 将恢复为序列化隔离?

在 C# 中工作,然后我继续定义了一个 DLL 导入,如下所示:

我调用了这个函数来启用缓存,并在调用时获得了成功的结果状态 0。尽管如此,当执行以下几行并尝试将隔离级别设置为 ReadUncommitted 时,我仍然得到异常“isolationlevel”。

这个问题与我在此处发布的另一个问题有关。

如何在 SQLite 中以 ReadUncommitted 隔离级别执行查询?