问题标签 [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 投票
6 回答
12471 浏览

mysql - 如何产生幻读?

使用“可重复读取”应该可以产生幻读,但是如何?我需要它作为教授 CS 学生的示例。

我认为我必须在非索引字段 x 上创建一个“SELECT ... WHERE x <= 888”,上限 888 不存在,然后在另一个连接上插入一个值略低于 888 的新行。

除非它不起作用。我需要一张很大的桌子吗?或者是其他东西?

0 投票
2 回答
7796 浏览

python - 如何使用 MySQLdb 从 Python 更改 SQL 隔离级别?

我在研究这方面遇到的文档表明,对其他数据库执行此操作的方法是在查询中使用多个语句,例如:

不幸的是,这样做不会产生任何结果,因为显然 Python DB API(或者可能只是它的这个实现?)不支持单个查询中的多个记录集。

过去有没有其他人在这方面取得过成功?

0 投票
2 回答
1108 浏览

database - 序列化隔离级别的实际用途?

我们在什么场景下使用SERIALIZABLE隔离级别?我在网站上看到一些答案说,当您希望交易完全隔离时,我们通常会这样做。

我想从你自己的经验中知道的是,当你在你的项目中使用它/或者你已经看到它在其他项目中使用时,其他隔离级别没有满足的具体要求是什么?

0 投票
1 回答
5590 浏览

java - Spring & JDBC Transactions:如何确保 DAO 对象中的隔离级别 SERIALIZABLE?

事务是在服务级别定义的,这是典型的。

但有时我们有一个 DAO 方法,它需要更高的、可序列化的隔离级别。

但是关于 SERIALIZABLE 隔离级别是否必要的知识被封装在 DAO 方法中,服务方法不需要知道这一点。

如何在 DAO 方法级别强制执行 SERIALIZABLE 隔离级别?我什至找不到一种方法来确定Spring 中的隔离级别是什么。

0 投票
1 回答
1175 浏览

sql - 隔离级别在连接到 SQL 2008 数据库的 vb.net 中不起作用

我有一个连接到 SQL 2008 服务器的 VB.net CF 应用程序。我正在尝试实现事务,但是当我在事务开始时破坏我的代码时,某些读取查询无法在表上完成。例如,从 id <> 123 的表中选择所有记录不会返回任何值。但是 select * from stock 将返回除我正在处理的行之外的所有值。

0 投票
1 回答
779 浏览

transactions - Weblogic DB2 DataSource:什么决定了事务隔离级别?

应用程序使用 Weblogic 应用程序服务器 10.0 提供的 DataSource 通过直接 JDBC 访问大型机 DB2。

  1. 如果可能的话,如何在 Weblogic 中为 DataSource 配置事务隔离级别?

  2. 如果应用程序没有在连接本身上设置事务隔离级别(将其设置为默认值,我认为是“读已提交”),而是使用 SQL 语句后缀“with UR”,那么语句是否会执行“未提交的阅读”?

  3. 找出应用程序在 DB2 中获得什么锁的最简单方法是什么?它是一个大型机 DB2 实例,用于大量应用程序......

0 投票
1 回答
1748 浏览

postgresql - 错误:重复键值违反唯一约束“xak1fact_dim_relationship”

我在删除一些行并根据java中的条件更新表时收到以下错误。我的数据库是 PostgreSQL 8.4。以下是错误:错误:重复键值违反唯一约束“xak1fact_dim_relationship”

导致此问题的代码如下:

第一个删除语句运行良好,但在运行更新时抛出上述异常......!我们支持 SQLServer、Oracle 和 DB2,并且相同的代码在其他 DB 上运行良好。顺便说一句,我们在 READ_COMMITTED 事务级别运行这些语句,如果在两者之间发生任何故障,我们将自动提交关闭,我们可以安全地回滚。如果我使用 autocommit true 运行上述代码,则代码可以正常工作!但我们不应该这样做。我怀疑 PostgreSQL 的多版本并发控制功能,我是否错误地设置了隔离级别?请尽早帮助我。我可以提供你想要的任何信息。

0 投票
4 回答
20139 浏览

postgresql - 为 postgresql 存储过程设置隔离级别

希望是一个简单的问题,但我还没有找到合适的答案。我被可靠地告知 PostgreSQL(特别是 9.0.4 版)中的存储过程(用户定义的 DB 函数)本质上是事务性的,因为它们是通过 SELECT 语句调用的,而 SELECT 语句本身就是一个事务。那么如何选择存储过程的隔离级别呢?我相信在其他 DBMS 中,所需的事务块将包装在 START TRANSACTION 块中,其中所需的隔离级别是可选参数。

作为一个特定的虚构示例,假设我想这样做:

想象一下,我想确保这个函数总是作为一个可序列化的事务执行(是的,是的,PostgreSQL SERIALIZABLE 不是正确的可序列化的,但这不是重点)。我不想要求它被称为

那么如何将所需的隔离级别下推到函数中呢?我相信我不能只把隔离级别放在BEGIN声明中,就像手册说的那样

重要的是不要将在 PL/pgSQL 中用于分组语句的 BEGIN/END 与用于事务控制的类似名称的 SQL 命令混淆。PL/pgSQL 的 BEGIN/END 仅用于分组;他们不会开始或结束交易。函数和触发器过程总是在由外部查询建立的事务中执行——它们不能启动或提交该事务,因为它们没有执行上下文。

对我来说最明显的方法是SET TRANSACTION在函数定义中的某个地方使用,例如:

虽然这会被接受,但尚不清楚我是否可以依靠它来工作。文档SET TRANSACTION说_ _

如果 SET TRANSACTION 在没有事先 START TRANSACTION 或 BEGIN 的情况下执行,它似乎没有任何效果,因为事务将立即结束。

这让我感到困惑,因为如果我调用一个单独的SELECT add_new_row('foo');语句,我希望(假设我没有禁用自动提交)SELECT 将作为具有会话默认隔离级别的单行事务运行。

手册还说:

在执行事务的第一个查询或数据修改语句(SELECT、INSERT、DELETE、UPDATE、FETCH 或 COPY)后,不能更改事务隔离级别。

那么如果从具有较低隔离级别的事务中调用该函数会发生什么,例如:

对于一个额外的问题:函数的语言有什么不同吗?在 PL/pgSQL 中设置隔离级别是否与在普通 SQL 中不同?

我是标准和记录最佳实践的粉丝,因此任何体面的参考资料将不胜感激。

0 投票
1 回答
1600 浏览

sql - Default isolation level in Microsoft SQL Server 2005

What is the default isolation level in SQL Server 2005 and in which scenario would you want to change it ? And little explanation about the default isolation level would be appreciated.

Thanks in anticipation

0 投票
2 回答
419 浏览

database - 使用多核与隔离级别开销的数据库 JDBC

你好,

我想使用 JDBC 将数据输入到具有原生 WAL 的多核系统上的数据库中。我正在考虑在我的应用程序中生成多个线程以并行插入数据。

如果应用程序有多个线程,我将不得不增加Repeatable ReadMVCC 数据库上应该映射到的隔离级别Snapshot isolation

如果我使用一个线程,我就不需要隔离级别。据我所知,大多数Snapshot isolation数据库都会分析所有可能发生冲突的事务的写入集,然后回滚除一个真正的冲突事务之外的所有事务。更具体地说,我说的是 Oracle、InnoDB 和 PostgreSQL。

1.) 这种对写集的分析是否昂贵?

2.) 多线程插入以获得更高的总吞吐量是个好主意吗?真正的冲突几乎是不可能的,因为应用层为线程提供了无冲突的东西。但是数据库应该是一个安全网。