问题标签 [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.
sql-server - 使用默认(已提交读)隔离模式时如何确保原子规则?
事务的一个重要属性是原子性。
默认模式是读取提交。这可以防止脏读。但是我们有可重复读取和幻行的问题。
使用默认(已提交读)隔离模式时如何确保原子规则?
示例-在 tran1 中,我从 table1 中读取值。当 tran1 仍在运行时,我启动 tran2 并更新 table1 中的相同值。所以 tran1 有陈旧的价值。
mysql - 了解具有 REPEATABLE_READ 和 READ_COMMITED 隔离级别的 InnoDB X-Lock
我有两个 mysql(AWS Aurora) 数据库表:
业务逻辑:多线程可以对Depatment和Employee表进行创建/修改或删除操作。对员工表的任何修改都将导致更新员工 ID
正如您在此处看到的,对于这两个操作,我在对其相应的员工进行任何更改之前都锁定了部门行。但在少数情况下,我们观察到员工记录存在于我们的数据库中,但没有相应的部门。
有人可以解释这种行为吗?
Spring 框架版本:5.2.0.RELEASE Aurora MySQL 版本:5.7.12
postgresql - PostgreSQL 读取不同事务的提交
我正在运行一些测试以更好地理解 postgresql 的读取提交。我有两个并行运行的事务:
第一个事务将选择前 500 个 id,然后通过休眠 10 秒来保持 id 第二个事务将平均查询表中的前 500 行。
根据我对读取提交的理解,第一个事务将选择 1 到 500 条记录,第二个事务将选择 501 到 1000 条记录。但实际结果是两个事务都选择了 1 到 500 条记录。
如果有人能指出哪一部分是错误的,我将不胜感激。谢谢
sql - InnoDB 如何在 READ COMMITTED LEVEL 上获取和保留记录锁
mysql-refman-5.7, 14.7.2.1 事务隔离级别,说:
在 READ COMMITTED 下,
- “对于 UPDATE 或 DELETE 语句,InnoDB 仅对其更新或删除的行持有锁。在 MySQL 评估 WHERE 条件后释放不匹配行的记录锁。”
- “但是,如果 WHERE 条件包含索引列,并且 InnoDB 使用索引,则在获取和保留记录锁时只考虑索引列。”
那么,第一个描述与第二个描述冲突吗?
这是示例:
那么,会话 A 锁定了所有 b=3 的记录,为什么不直接锁定 b=3 和 c=3 的记录呢?
transactions - Read Committed 是否可以防止具有多个更新查询的事务中的脏读?
据我了解,更新 SQL 语句中的 Read Committed 一次在一行上放置一个读锁,然后再移动到下一行并删除前一个读锁。这意味着另一个事务将能够在整个事务完成之前读取先前的数据。假设我们有 2 个交易,t1 和 t2。t1 在单个事务中执行多个更新 SQL 语句,在完成之前,t2 从之前更新的行中选择数据。如果 t1 要回滚,根据我的理解,这意味着每个更新 SQL 语句都将被回滚。在这种情况下,t2 会看到回滚的数据并提交脏读吗?