问题标签 [read-committed]

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 投票
2 回答
53 浏览

sql-server - 使用默认(已提交读)隔离模式时如何确保原子规则?

事务的一个重要属性是原子性。

默认模式是读取提交。这可以防止脏读。但是我们有可重复读取和幻行的问题。

使用默认(已提交读)隔离模式时如何确保原子规则?

示例-在 tran1 中,我从 table1 中读取值。当 tran1 仍在运行时,我启动 tran2 并更新 table1 中的相同值。所以 tran1 有陈旧的价值。

0 投票
0 回答
35 浏览

mysql - 了解具有 REPEATABLE_READ 和 READ_COMMITED 隔离级别的 InnoDB X-Lock

我有两个 mysql(AWS Aurora) 数据库表:

业务逻辑:多线程可以对Depatment和Employee表进行创建/修改或删除操作。对员工表的任何修改都将导致更新员工 ID

正如您在此处看到的,对于这两个操作,我在对其相应的员工进行任何更改之前都锁定了部门行。但在少数情况下,我们观察到员工记录存在于我们的数据库中,但没有相应的部门。

有人可以解释这种行为吗?

Spring 框架版本:5.2.0.RELEASE Aurora MySQL 版本:5.7.12

0 投票
1 回答
65 浏览

postgresql - PostgreSQL 读取不同事务的提交

我正在运行一些测试以更好地理解 postgresql 的读取提交。我有两个并行运行的事务:

第一个事务将选择前 500 个 id,然后通过休眠 10 秒来保持 id 第二个事务将平均查询表中的前 500 行。

根据我对读取提交的理解,第一个事务将选择 1 到 500 条记录,第二个事务将选择 501 到 1000 条记录。但实际结果是两个事务都选择了 1 到 500 条记录。

如果有人能指出哪一部分是错误的,我将不胜感激。谢谢

0 投票
0 回答
13 浏览

sql - InnoDB 如何在 READ COMMITTED LEVEL 上获取和保留记录锁

mysql-refman-5.7, 14.7.2.1 事务隔离级别,说:

在 READ COMMITTED 下,

  1. “对于 UPDATE 或 DELETE 语句,InnoDB 仅对其更新或删除的行持有锁。在 MySQL 评估 WHERE 条件后释放不匹配行的记录锁。”
  2. “但是,如果 WHERE 条件包含索引列,并且 InnoDB 使用索引,则在获取和保留记录锁时只考虑索引列。”

那么,第一个描述与第二个描述冲突吗?

这是示例:

那么,会话 A 锁定了所有 b=3 的记录,为什么不直接锁定 b=3 和 c=3 的记录呢?

0 投票
0 回答
17 浏览

transactions - Read Committed 是否可以防止具有多个更新查询的事务中的脏读?

据我了解,更新 SQL 语句中的 Read Committed 一次在一行上放置一个读锁,然后再移动到下一行并删除前一个读锁。这意味着另一个事务将能够在整个事务完成之前读取先前的数据。假设我们有 2 个交易,t1 和 t2。t1 在单个事务中执行多个更新 SQL 语句,在完成之前,t2 从之前更新的行中选择数据。如果 t1 要回滚,根据我的理解,这意味着每个更新 SQL 语句都将被回滚。在这种情况下,t2 会看到回滚的数据并提交脏读吗?