第6章 数据库管理之事务

来源:互联网 发布:淘宝如何改会员名 编辑:程序博客网 时间:2024/06/05 04:11

学习:


图1 数据库管理

在第六章中主要讲了两方面内容,一是数据库管理的操作单元事务,二是数据库管理的各种技术。今天我们来着重解析一下事务的概念及其四大属性。

那么我们首先来了解一下事务的基本概念。即事务是构成单一国际工作单元的操作几个,要么完整地执行,要不完全不执行。不论发生何种情况,DBS必须保证事务能正确,完整地执行。

由事务的概念我们可以知道,DBS就是来执行事务的,而一个事务并不是一个单一的动作,而是许多动作的集合。就像我们要完成吃饭这件事,看似吃饭是一件事,但却要买饭,食用和送回餐具这一系列的动作来完成。这才是一个 事务。下面我们来看一个书上的例子。

T : BEGIN TRANSACTION;/ * 事务开始语句 * /

read (A) ;

A : = A - 50;

write (A) ;

if ( A < 0) ROLLBACK ;/ * 事务回退语句 * /

else { read (B) ;

B : = B + 50 ;

write (B) ;

COMMIT ; }/ * 事务提交语句 * /

书上对这个小例子有很详细的很好的解释,这里不再赘述。写在这里主要是为了我文章的完整,这就像是数据库有完整性一样,我的文章也要有完整性。不过,我们要注意事务是以BEGIN TRANSACTION 语句开始的,以COMMIT 语句或ROLLBACK 语句结束的,重点要注意在COMMIT 和ROLLBACK 语句分别是在什么情况下使用的。

对事务有了一个较为清晰的认识后,我们接下来就来看看事务的四大属性。为例更好的理解事务及其属性下面我们以去ATM机(自动存取款机)取款为例进行解析。

一、原子性

假如你有一张内有1000元存款的银行卡,现在要取出200元交书费,在已经输入密码,输入金额为200元之后的ATM在点钞的过程中,突然断电了,现在钱未到你的手里,但刚刚已经听到点钞的声音,那么我们的银行卡里的钱是不是少了呢?换个地方一查发现还是1000元,没有少。这就是事务的原子性,要么完全执行,要么完全不执行。在介绍事务的基本概念时,我们已经说明事务是很多歌动作的集合,所以只要其中一个动作出了错,这个事务就会返回到最开始的状态,就像这里的取款,要么从输入取款金额到钱到你的手里,要么就回退到还没输入金额的状态,这就是事务的原子性,即一个事务的不可分割性。

二、一致性

如果现在机器没有故障,你也成功取出了200元,那么卡内的余额应该是800元了,查询一下确实是800元,此时数据库中的各张表中的数据就都更新了。数据库的完整性就是保证数据库内数据的更新变化的一致,这就是事务的一致性。

三、隔离性

而就在你取款的同时有另一个同学也用你的这张卡在网上购买了一件商品花了50元,则你在这边查看余额就是750元。刚刚你取款的动作和你同学购买商品支付的动作并没有互相干扰,好像就只有自己在对这张卡操作一样。如果不是你的手机收到关于扣费的提示,你也完全不会察觉到。这就是事务的隔离性,即在多个事务同时执行时,各个事务互不干扰,且结果和这些事务先后单独执行时的结果一样(最终卡内余额都是750元)。这是由DBMS的并发控制子系统实现的。

四、持久性

现在你的银行卡里还有750元,那两次分别取款200元和支付的50元的操作记录在数据库中就像你取款的动作一样发生了就是发生了,这就是事务的持久性,即事务一旦被完成了就不会丢失。而事务的这一属性是由DBMS的恢复管理子系统来实现的。


二  感想 :

在学习事务的时候最重要的就是结合生活来建立联系,这样就便于我们理解了。就像米老师说的,看书的时候要把生活融入书中,而不是把书里的内容硬塞进脑子里。还是那句话,找节点,找联系,联系生活。



0 0
原创粉丝点击