(一) 事务并发可导致的问题
事务并发大致可以导致一下几个问题:lost update、dirty read、uprepeatable read和phantom read。uprepeatable read还有个特例就是second lost updates problem,即是不同事务中后面的更新操作会覆盖之前事务的更新操作。uprepeatable read和phantom read的区别在于uprepeatable read是有数据更新造成的,而phantom read则是由于新插入数据造成的。
(二)数据库系统的锁的基本原理
数据库本身会提供锁的机制:共享锁、独占锁。select会使事务获取共享锁而delete、insert、update则会使事务获取独占锁。两个事务同时获取共享锁然后执行更新操作即都想获取独占锁时,便会产生死锁。这种锁机制是数据库系统自带的,它会根据事务执行的sql语句,来自动为数据源上锁,它有以下几种颗粒度:
1. 数据库级锁:锁定整个数据库;
2. 表级锁: 锁定一张表;
3. 区域级锁: 锁定数据库的特定区域;
4. 页面级锁: 锁定特定的页面;
5. 键值级锁: 锁定表中带有索引的一行数据;
6. 行级锁: 锁定表中单行数据。
(三) 事务隔离级别
锁控制并发的效果好,但是尽量不要显式的为数据库加锁,而应该首先让数据库自动管理锁。数据库的隔离级别提供了很好的支持。它有四种级别:
1. serializable
2. repeatable read
3. read commited
4. read uncommited
在mysql里可以这样设置隔离级别:
// 单个链接
set transaction isolation level read commited;
// 数据库全局
set global transaction isolation level read commited;
hibernate也可以在配置文件里设置:
hibernate.connection.isolation=2
2 表示 read commited级别,其他的为:1 - read uncommitted、4 - repeatable read、8 - serialized
分享到:
相关推荐
### 数据库事务并发与事务加锁 #### 一、数据库事务基本概念 在数据库领域,事务(Transaction)是由一系列操作组成的逻辑工作单元。事务具备四个关键特性:原子性(Atomicity)、一致性(Consistency)、隔离性...
### 数据库事务总结 #### 一、事务的基本概念与特性 **事务**是数据库系统中的一个逻辑工作单元,它由一系列的操作组成,这些操作要么都完成,要么都不完成,以此来保证数据的一致性和完整性。 #### 二、事务的...
标题和描述中提到的核心知识点是关于数据库事务并发控制中可能出现的问题,特别是脏写(Dirty Write)和脏读(Dirty Read)两种现象。这些知识点主要涉及数据库事务的隔离级别,事务的ACID属性(原子性、一致性、...
综上所述,关系型数据库的并发操作是一个涉及多方面技术的复杂主题,包括Java的JDBC、事务管理、并发控制策略以及数据库连接的管理。理解并熟练掌握这些知识,对于开发高效、稳定的数据驱动应用程序至关重要。
数据库并发控制是指在多用户环境下,当多个事务试图同时访问或修改同一数据时,数据库管理系统采取措施确保所有事务正确执行的过程。并发控制机制是衡量数据库管理系统性能的一个重要指标。如果没有适当的并发控制,...
- **可串行化调度**:虽然事务并发执行,但是其效果等同于串行调度。 #### 五、冲突可串行性 冲突可串行性是一种特殊的可串行化调度,其中只考虑了事务间的冲突操作。如果一个调度中所有的冲突操作都可以重新排列...
正确的调度是指多个事务并发执行时,其结果与某一串行调度的结果相同。可串行化的调度称为正确的调度。 七、并发调度的实例 设 T1、T2、T3 是三个事务:T1: A:=A+2, T2: A:=A*2, T3: A:=A*2。设 A 的初值为 0。...
数据库处理的经典资料: 叫你处理事务 如何并发处理 瞧瞧吧 机不可失哟
这是一个关于银行的数据库的处理,模仿的是从账户1转账给...那就需要用到事务,如果没有一起执行,就回滚。这个代码比较简单,希望对大家有帮助,自己建立一个数据库bank,在里面建立一个表Account,两属性:Id,money.
数据库事务处理是数据库管理系统中的核心概念,用于确保数据的一致性和完整性。事务是数据库操作的基本单元,它包含一组逻辑操作,这些操作要么全部执行,要么全部不执行,以确保数据的原子性。事务处理主要关注两个...
数据库思维导图——并发控制 并发控制 多事务执行方式 (1)事务串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的...事务并发执行带来的问题
数据库并发事务处理是确保数据一致性和完整性的关键。通过理解事务的ACID特性、隔离级别和并发控制技术,开发者可以更有效地设计和优化数据库系统。提供的代码示例展示了如何在实际数据库操作中应用这些概念,帮助...
【Redis 事务与关系型数据库事务的比较】 Redis 和关系型数据库(如 MySQL)在事务处理上有显著的差异。在Redis中,事务提供了一种批量执行命令的方式,以确保原子性,但其机制与传统的ACID(原子性、一致性、隔离...
例如,银行取款的例子中,两个事务并发执行可能导致错误的余额。 - **脏读**:一个事务读取到了另一个事务未提交的修改,如果这个未提交的事务被回滚,那么读取到的数据就是不正确的。 - **不可重读**:在事务执行...
数据库并发控制是数据库管理系统中的关键组成部分,其目的是确保在多用户环境下,多个事务同时执行时,数据的完整性和一致性不受影响。并发控制的主要任务是防止事务间的不正确交互,如脏读、不可重复读和幻读等现象...
在数据库系统中,事务管理、恢复以及并发控制是至关重要的技术,它们确保了数据库的稳定性和数据的一致性。事务是数据库操作的基本单元,具有原子性、一致性、隔离性和持续性(ACID特性)。原子性意味着事务中的所有...