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.