问题标签 [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.
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 语句?
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。
我应该期待什么负面后果?
hibernate - 什么是休眠中的隔离?
我不理解隔离的概念,在hibernate
. 谁能解释一下,并提出一些可能的用例?
sql - 对键在列表中的行的读取提交(读取是原子的吗?)
我碰巧正在使用innodb,已提交读。
我的简单问题是与交易相关的:
我有一个表(TreeNodeId),其中包含一组 4 个不同的节点键,它们代表我系统中与网页的可用路径相关的所有现存节点。每个键代表数据库中的一个项目,表中的每一行代表使用项目的各种组合。
在事务开始时,根据正在更改的项目,我对 TreeNodeId 中反映我的一个或两个项目的一些现存组合的所有行进行单个查询。
即使获取 10,000 行,这个单一查询是否会在内部保持一致?db 查询集是否有可能获取前 100 行,然后其他一些同时事务提交新的或删除的行,这会导致剩余结果不一致?
安迪
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 ?
另外,我愿意接受想法,如果有任何其他方法可以处理这个脚本,以便在脚本移动到下一个子查询之前提交每个子查询......请让我知道。
这是我的脚本:
java - 数据库实现在 JDBC 连接中设置的事务隔离级别的各种方式
我们可以在 JDBC 连接上设置事务隔离级别,以控制对并发事务之间公共记录的读/写访问的可见性级别。数据库实现这一点的一种方法是在记录/表上放置不同类型的锁。
但是数据库还有其他方式实现这些事务级别吗?
sql-server - SQL SERVER 2008 R2 事务快照隔离级别未按预期工作
我创建了一个名为“test_isolation”的数据库并创建了一个包含数据的表“人”
现在数据库已更改为允许session1中的快照隔离
现在我在会话 2中创建一个事务
结果与预期一致。(注意我们还没有提交这个交易!)
现在我在会话 3中执行以下查询
会话 3 中的查询继续无限运行,这意味着表被锁定。
如果我回到会话 2 并提交事务.. 我可以在会话 3 上运行查询,结果符合预期。
事务隔离级别SNAPSHOT是不是应该锁表吧?我做错了什么还是我对事务SNAPSHOT隔离的理解是错误的?
请帮忙..
sql-server-2008 - 使用 TRANSACTION ISOLATION LEVEL SERIALIZABLE 时的锁范围
以下链接描述了可序列化事务隔离级别。
假设我有一个用户更新表[dbo].[Table_A]
。另一个用户正在更新 table [dbo].[Table_B]
。而且我想序列化这两个更新语句(意味着在第二个开始之前等待第一个完成),尽管我们正在接触不同的表。我猜我不能使用表锁,但也许范围锁可以做到这一点。有人可以帮我理解代码的样子吗?或者这不适用于 SQL Server 2008 中的事务隔离级别功能?
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"的日志。
此外,我期待的异常也会发生,它确认隔离级别未设置为可序列化。
sql-server - 在读取未提交查询之后,我是否必须将其设置回已提交?
想象一下使用与此处类似的代码执行查询:
想象一下,必须读取一个绝对会不停地写入的数据库表,这会导致很多死锁和故障,因此您必须使用未提交的读取隔离级别执行该读取。
如果我的正常查询是:
我经常看到您将其更改为:
好的,这就是我问这个问题的原因,这个特定的链接:http: //blog.sqlauthority.com/2011/04/17/sql-server-applying-nolock-hint-at-query-level-nolock-整个交易/
他的例子如下:
我是否也需要在查询结束时将其设置回 READ COMMITTED ?还是我未提交的读取只对那个查询有用?或者可能是连接的生命周期(检查我的代码意味着只要我返回数据集,因为我的连接随即关闭)?
网络上的大多数示例都省略了“将其设置回原始隔离级别”,因此他将其包含在内令我感到困惑。谢谢!