事务机制
1.概念——多步操作组成的一个(逻辑单元)业务系统。
?? 1.1:why——业务要求+数据恢复。
???1.2:与数据库日志相关。
?
2.事务实现机制
??????? 开启事务
???????*Oracle在执行sql语句时自动开启。
——>
??????? 用户执行数据库DML语句
??????? *set transaction——开启一个可读/读写的会话,建立隔离级别,为当前事务制定回滚段。
??????? *lock table——以制定的模式锁表,将覆盖默认的行锁。
——>
??????? DBMS在日志文件中写一条记录(被该语句影响的每一条记录的前后2个副本)
————>
??????????????? 正常
————>
??????????????? 例外,回滚
——>
??????? 日志写完
————>
??????????????? 提交事务,修改数据库
??????????????? *commit——提交数据到数据库,释放资源。
??????????????? *自动提交的条件——退出SQL*PL;执行DCL;执行DDL。
————>
??????????????? 未提交,则自动回滚
??????????????? *rollback——回滚所有的改变,释放资源。
??????????????? *savepoint——设置一个保存点,可以回滚到这里。
??????????????? *rollback to savepoint——回滚到该保存点,释放保存点内的资源。
???????
???????
???????
???????
???????
?
3.隔离级别——隔离级别与性能成反比。
????2.1:未提交读——赃读
??? 3.2:提交读——更改(dml)的数据不可见,读(select)的数据可修改——不可重复读
??? 3.3:可重复读——更改(dml)的数据不可见,读(select)的数据其它事务可读——幻想
??? 3.4:可串行读
4:锁
???? 4.1:锁的分类
????????? 4.1.1:内部锁(latch)——Oracle自动管理,保护内部数据库结构。
????????? 4.1.2:DDL锁——create、drop、truncate、alter
????????? 4.1.3:DML锁——事务
???? 4.2:锁的模式
????????? 4.2.1:share(s)——其它事务可以加S锁,不能修改数据
????????? 4.2.2;exclusive(x)——不允许其它事务锁定该表
????????? 4.2.3:row share(rs)——
????????? 4.2.4:row exclusive
????????? 4.2.5:share row exclusive(srx)——表加S锁,行加X锁。
??? 4.3:锁粒度——锁定的对象越大,锁粒度越大,能利用的资源就越少,并发度越小,系统开销越小。
????????? *行级锁、表级锁、数据库级锁。
5.特点
?? 5.1:一致性——状态改变前后,必须能量守恒。
?? 5.2:原子性——指事务不可分割,作为一个团体同进退。
?? 5.3:持久性——事务完成后,的变更是不可回滚的。
?? 5.4:隔离性——每个事务必须孤立于其它事务执行。没有交际。不可见。
?? 5.