问题标签 [transaction-isolation]

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 投票
1 回答
240 浏览

sql - 如何设置隔离级别,以便在一个事务完成后插入的数据可用于另一个事务?

我有以下表格(非常简化):

的想法JobsData是,任何项目Data都可以与一个或多个项目相关联,Jobs并且每个项目都Jobs可以有一个或多个Data与之相关联的项目。

现在我有两个交易:

带有锁定提示的代码来自这个答案。它的目的是让多个TRAN2实例并行运行并且永远不会相同JobId

该代码在 SQL Server (默认隔离级别READ_COMMITTED)上运行良好,但在 SQL Azure 中TRAN2有时运行不正确 - 第一个SELECT产生非 null JobId,但第二个SELECT产生和空结果集。我认为这是因为 SQL Azure 中的默认隔离级别是READ_COMMITTED_SNAPSHOT.

我想进行最少的更改以解决我的问题 - 以便TRAN2在第一个中检索 nullSELECT或在第二个中检索正确的结果集SELECT

我将哪些表命中应用于我拥有的哪些 SQL 语句?

0 投票
1 回答
388 浏览

sql - 将默认事务隔离级别从 READ_COMMITTED_SNAPSHOT 更改为 READ_COMMITTED 有什么期望?

在 SQL Server 中,默认隔离级别是READ_COMMITTED,但在 SQL Azure 中,默认级别是READ_COMMITTED_SNAPSHOT.

假设我将 SQL Azure 服务器中的默认级别更改为READ_COMMITTED_SNAPSHOT(使用SET TRANSACTION ISOLATION LEVEL),使其行为类似于 SQL Server。

我应该期待什么负面后果?

0 投票
2 回答
4115 浏览

hibernate - 什么是休眠中的隔离?

我不理解隔离的概念,在hibernate. 谁能解释一下,并提出一些可能的用例?

0 投票
1 回答
71 浏览

sql - 对键在列表中的行的读取提交(读取是原子的吗?)

我碰巧正在使用innodb,已提交读。

我的简单问题是与交易相关的:

我有一个表(TreeNodeId),其中包含一组 4 个不同的节点键,它们代表我系统中与网页的可用路径相关的所有现存节点。每个键代表数据库中的一个项目,表中的每一行代表使用项目的各种组合。

在事务开始时,根据正在更改的项目,我对 TreeNodeId 中反映我的一个或两个项目的一些现存组合的所有行进行单个查询。

即使获取 10,000 行,这个单一查询是否会在内部保持一致?db 查询集是否有可能获取前 100 行,然后其他一些同时事务提交新的或删除的行,这会导致剩余结果不一致?

安迪

0 投票
3 回答
16254 浏览

oracle - 可以将提交应用于脚本中的每个 INSERT INTO 吗?

我刚刚从 SQL Server 迁移到 ORACLE,并且正在编写一个脚本(SQL Server 风格)。在 SQL Server 中,我们在脚本中应用一些逻辑后使用 BEING TRAN - END TRAN。这可以在 BEGIN-END 块内完成。在 Oracle 中,我发现这有点困难。在这个网站上进行了大量的谷歌搜索和搜索后,我仍然不清楚如何满足这个要求。

当我运行脚本(粘贴在下面)时,它作为一个事务运行。并且 DBMS_OUTPUT.Put_line 也会在整个脚本执行后显示。有没有办法在每次提交后打印 DBMS_OUTPUT.Put_line ?

另外,我愿意接受想法,如果有任何其他方法可以处理这个脚本,以便在脚本移动到下一个子查询之前提交每个子查询......请让我知道。

这是我的脚本:

0 投票
1 回答
172 浏览

java - 数据库实现在 JDBC 连接中设置的事务隔离级别的各种方式

我们可以在 JDBC 连接上设置事务隔离级别,以控制对并发事务之间公共记录的读/写访问的可见性级别。数据库实现这一点的一种方法是在记录/表上放置不同类型的锁。

但是数据库还有其他方式实现这些事务级别吗?

0 投票
1 回答
4232 浏览

sql-server - SQL SERVER 2008 R2 事务快照隔离级别未按预期工作

我创建了一个名为“test_isolation”的数据库并创建了一个包含数据的表“人”

现在数据库已更改为允许session1中的快照隔离

现在我在会话 2中创建一个事务

结果与预期一致。(注意我们还没有提交这个交易!)

现在我在会话 3中执行以下查询

会话 3 中的查询继续无限运行,这意味着表被锁定。

如果我回到会话 2 并提交事务.. 我可以在会话 3 上运行查询,结果符合预期。

事务隔离级别SNAPSHOT是不是应该锁表吧?我做错了什么还是我对事务SNAPSHOT隔离的理解是错误的?

请帮忙..

0 投票
1 回答
672 浏览

sql-server-2008 - 使用 TRANSACTION ISOLATION LEVEL SERIALIZABLE 时的锁范围

以下链接描述了可序列化事务隔离级别。

http://blogs.msdn.com/b/sqlcat/archive/2011/02/20/concurrency-series-basics-of-transaction-isolation-levels.aspx

假设我有一个用户更新表[dbo].[Table_A]。另一个用户正在更新 table [dbo].[Table_B]。而且我想序列化这两个更新语句(意味着在第二个开始之前等待第一个完成),尽管我们正在接触不同的表。我猜我不能使用表锁,但也许范围锁可以做到这一点。有人可以帮我理解代码的样子吗?或者这不适用于 SQL Server 2008 中的事务隔离级别功能?

0 投票
1 回答
673 浏览

java - Derby 不允许将隔离级别设置为 TRANSACTION_SERIALIZABLE 以进行并发访问

我正在使用 Derby 数据库并尝试同时创建数据库对象。

众所周知,其中默认的隔离级别是TRANSACTION_READ_COMMITTED。

但我不想让 DB 进行幻读,因此,我想将隔离级别设置为 TRANSACTION_SERIALIZABLE。

我所做的就是这段代码。

正如预期的那样,我看到日志为"The connection isolation is already TRANSACTION_READ_COMMITTED",但令人惊讶的是我没有看到"The connection isolation is now TRANSACTION_SERIALIZABLE"的日志。

此外,我期待的异常也会发生,它确认隔离级别未设置为可序列化。

0 投票
1 回答
5798 浏览

sql-server - 在读取未提交查询之后,我是否必须将其设置回已提交?

想象一下使用与此处类似的代码执行查询:

想象一下,必须读取一个绝对会不停地写入的数据库表,这会导致很多死锁和故障,因此您必须使用未提交的读取隔离级别执行该读取。

如果我的正常查询是:

我经常看到您将其更改为:

好的,这就是我问这个问题的原因,这个特定的链接:http: //blog.sqlauthority.com/2011/04/17/sql-server-applying-nolock-hint-at-query-level-nolock-整个交易/

他的例子如下:

我是否也需要在查询结束时将其设置回 READ COMMITTED ?还是我未提交的读取只对那个查询有用?或者可能是连接的生命周期(检查我的代码意味着只要我返回数据集,因为我的连接随即关闭)?

网络上的大多数示例都省略了“将其设置回原始隔离级别”,因此他将其包含在内令我感到困惑。谢谢!