数据库与事务的管理,数据库事务管理
如果把事务管理比喻成一块砖的话,那么数据库管理就是一座房子,可见,事务管理是数据管理的基础并且它们有着紧密的联系。下面我先从宏观上介绍一下事务管理与数据库的管理。
一、导图宏观把控
事务是构成单一逻辑单元的工作集合,要么完全执行,要么完全不执行。它有四个性质,隔离性,它与数据管理的并发控制有关;持久性,它与数据库管理的恢复有关;原子性和一致性,他俩是数据库中的安全性与完整性的前提。事物的四个性质紧紧地与数据管理联系起来,从宏观上来说对数据的操作是对数据库四个性质的操作,从微观上来讲是对事物四个性质的,下面深入数据库管理操作说明。
二、数据库管理导图
安全性PK完整性
安全性:保护数据库,防止不合法的使用,以免数据的泄密,更改或破坏。完整性:数据的正确性,有效性,相容性,防止错误的数据进入数据库。
区别:安全性确保用户被限制在做其想做的事,完整性确保用户所做的事情是正确的。
联系:保护数据。
并发控制是解决多个事务一块执行的问题,多个事物如果对同一个数据一块操作,这就带来了数据的更新丢失,不可重复读,读脏数据等等问题,那么怎样解决这种问题哪?于是引入了“锁”的概念,封锁的三级协议也就伴随着问题产生了。
数据库的恢复是数据管理的最后一道屏障,如果数据库内的数据遭到破坏,我们可以用恢复数据库的方法来解决,但是在恢复数据库的前提是我们转储和建立日志,然后在根据数据库破坏的级别有选择性的恢复数据库。
三、小结
事务的操作是对数据管理的细分,我们如果控制好事务,处理好数据,那么对于数据的管理和维护起到了良好的作用,事务虽小但是它的集合就形成了对数据的整体操作。正所谓不积跬步,无以至千里,不积小流,无已成江河!
事务(transaction)代表一组不可分割的操作,要么全部执行,要么全部不执行,
transaction起始于一条DML语句,结束于commit;语句,或者是DCL、DDL语句,在事务未提交前
可以通过rollback回滚事务,正常退出事务会自动提交,非正常退出事务会自动回滚。
北大SQL数据库视频教程事务04 - 视频教程在线观看
v.ku6.com/show/E0qbiVBfaErPqdpx.html
oracle数据库_DML与事务控制- 视频教程在线观看
v.ku6.com/show/uXnoh4ngRd3GcwRz.html
一 事务处理介绍
事务是这样一种机制,它确保多个SQL语句被当作单个工作单
元来处理。事务具有以下的作用:
* 一致性:同时进行的查询和更新彼此不会发生冲突,其他
用户不会看到发生了变化但尚未提交的数据。
* 可恢复性:一旦系统故障,数据库会自动地完全恢复未完
成的事务。
二 事务与一致性
事务是完整性的单位,一个事务的执行是把数据库从一个一
致的状态转换成另一个一致的状态。因此,如果事务孤立执行时
是正确的,但如果多个事务并发交错地执行,就可能相互干扰,
造成数据库状态的不一致。在多用户环境中,数据库必须避免同
时进行的查询和更新发生冲突。这一点是很重要的,如果正在被
处理的数据能够在该处理正在运行时被另一用户的修改所改变,
那么该处理结果是不明确的。
不加控制的并发存取会产生以下几种错误:
1 丢失修改(lost updates)
当多个事务并发修改一个数据时,不加控制会得出错误的结
果,一个修改会覆盖掉另一个修改。
2 读的不可重复性
当多个事务按某种时间顺序存取若干数据时,如果对并发存
取不加控制,也会产生错误。
3 脏读(DIRDY DATA),读的不一致性
4 光标带来的当前值的混乱
事务在执行过程中它在某个表上的当前查找位置是由光标表
示的。光标指向当前正处理的记录。当处理完该条记录后,则指
向下一条记录。在多个事务并发执行时,某一事务的修改可能产
生负作用,使与这些光标有关的事务出错。
5 未释放修改造成连锁退出
一个事务在进行修改操作的过程中可能会发生故障,这时需
要将已做的修改回退(Rollback)。如果在已进行过或已发现错
误尚未复原之前允许其它事务读已做过修改(脏读),则会导致
连锁退出。
6 一事务在对一表更新时,另外的事务却修改或删除此表的
定义。
数据库会为每个事务自动地设置适当级别的锁定。对于前面
讲述的问题:脏读、未释放修改造成的连锁退出、一事务在对一
表更新时另外的事务却修改或删除此表的定义,数据库都会自动
解决。而另外的三个问题则需要在编程过程中人为地定义事务或
加锁来解决。
三 事务和恢复
数据库本身肩负着管理事务的责任。事务是最小的逻辑工作
单元,在这个工作单元中,对数据库的所有更新工作,要么必须
全部成功,要么必须全部失败(回退)。只要应用程序指定了某
段程序为一个事务并做了相应的处理(提交或回退),数据库系
统会自动维护事务本身的特性。
四 ORACLE数据库的事务定义
ORACLE事务从COMMIT、ROLLBACK、连接到数据库或开始第一
条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出
数据库时结束。如果在一个事务中包含DDL语句,则在DDL语句的
前后都会隐含地执行COMMIT语句,从而开始或结束一个事务。
如果一个事务由于某些故障或者由于用户改变主意而必须在
提交前取消它,则数据库被恢复到这些语句和过程执行之前的状
态。
利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个
事务。可以回退整个事务,也可以会退部分事务,但是不能回退
一个已经被提交的事务。回退部分事务的ROLLBACK命令为:
ROLLBACK to savepoint 存储点名
存储点是用户放入事务中的标记,用来表示一个可被回退的
位......余下全文>>