事务与锁的基础知识
概述
在通常的情况下,系统中总是有若干个事务再并发执行,他们可以共享的存取数据库中
的数据。但是有的时候,不同的事务再访问数据库的时候可能会出现抢占资源的情况,从
而造成死锁,死锁对于系统来说是一个非常影响性能的事情。就好像很多车辆来到了十字
路口,但是他们如果互不相让就会造成拥堵。所以我们很有必要了解事务以及锁的原理,
在充分提高数据库并发能力的同时,尽量的去避免和解决死锁的问题。
目标
了解事务以及锁的概念
了解死锁产生的原因
掌握自动提交、事务回滚的方法 自治事务??
会设置事务的隔离级别
oracle 事务的工作原理
oracle 是基于网络环境下的,多个用户可以同时来访问 oracle 数据库,当一个用户需要
修改数据库的某个资源的时候,为了防止其他用户访问这个数据库资源,就需要锁定这个
资源,修改完成之后再解除锁定。
事务的概念以及特性
事务就是一组数据库操作的逻辑单元,作用是用来保证数据库的一致性以及可恢复性,
在事务中包含的数据库操作是一个不可分割的整体,要么一起被执行,要么回滚到事务之
前的状态。
在执行事务的时候,并不是每执行其中的一个数据库操作就立马将结果写入数据库,而
是完成所有的操作之后,执行提交命令 commit 或者是窒息感回滚命令 rollback 来讲数据库
恢复到执行事务之前的状态。ÈÈÈ
事务有自动性、一致性、独立性、持久性。自动性:事务再开始执行的时候,事务中所
有的数据操作都会被写入到事务日志中。事务日志包括针对数据的读写操作
(insert、update、delete),以及针对任务的操作(创建表、创建视图或者索引),取消
事务的时候,oracle 会自动执行该事务在事务日志中的操作记录的反操作。一致性:当事
务执行完成的时候,数据中所有数据的状态应该是一致的,所有的规则都必须应用到事务
的修改上,以便维护数据的完整性。独立性:主要体现在“锁”的概念上,当两个事务同时
操作某张表的时候,事务 B 只能看到事务 A 修改之前或者提交之后的表的数据,不能看到
该修改过程中的数据。持久性:当一个事务在完成并且提交之后,那么已经写入的数据就
会永久的保存到数据库当中,这个就体现了数据的持久性。
SQL 语句与事务之间的联系
SQL 语句可以分为 DDL、DCL、DML 三种类型。
DML(Data Manipulation language)包含常见的 insert、update、delete、merge 等操作。
DDL(Data Definition Language)包含定义数据库和管理数据库中所有对象的语句,例如
create、alter、drop 等等。
DCL(Data Control Language)包含授予或者收回访问数据库的某种特权、控制数据库操
纵事务发生的时间以及效果、对 DB 进行监视等。
一个事务开始于一条可以执行的 SQL 语句,结束于以下六种情况:
1、用户提交事务。2、用户回滚事务。3、遇到 DDL 语句。4、遇到 DCL 语句。5、用
户结束会话。6、数据库关闭或者系统崩溃。