旅途

如果想飞得高,就该把地平线忘掉

ACID属性

做学问马虎不得啊。
ACID Properties
ACID属性

事务可以由四个基本性质来定义,简记为首字母缩写:ACID(原子性  atomicity、一致性  consistency、隔离性  isolation、持久性 durability)。

Atomicity
原子性

原子性保证了要么所有更新都已完成,要么全部都未发生。由于事务保证的原子性,你不需要亲自编写代码来处理诸如一些已更新完成,其他却失败了的状况。

对照刚才的关于课程安排的例子,如果从第一个课程的名单里移除此学生成功,但是添加他到第二个课程的名单时失败,那么事务就会中止,并且此学生最终不会被从第一个课程中的名单移除。

Consistency
一致性

一致性意味着事务结束后系统的数据依然保证一致。在事务开始之前,数据保持有效的状态,事务结束后也如此。

一致性可以用讨论原子性时的同样情形,即把一个学生从一个课程转移到另一个来描述。如果把学生从第一个课程移除失败,但是添加到第二个课程成功,那么这个学生将被同时登记在两个课程上。这是不合法的情形,数据库的数据将不能保持一致。一致性表

示,事务的结果必须使数据库仍保持数据一致的状态。所以事务的部分操作失败的话,所有其他部分也要回到原先的状态,就象什么都没发生一样。

Isolation
隔离性

多个用户可能同时对同一个数据库进行操作。隔离性保证了在事务完成之前,该事务外部不能看到事务里的数据的改变。也不能访问一些中间状态,因为假如事务终止的话,这些状态将永远不会发生。

如果你做一个查询来获取所有课程的学生名单,与此同时,一个事务正在运行,把一个学生从一个课程转移到另外一个,那么两个课程的名单上都不会出现这个学生。隔离性保证了事务外无法看到事务内的任何中间状态或结果。

Durability
持久性

持久性意味着即便是系统当机也能保证一致性的状态。如果一个数据库系统当机,它必须保证已完成的事务确实已经写入数据库。

---面试前脑子中还迸出这个问题,结果人家真的问到了,运气好,运气差。

posted on 2008-01-07 14:47 旅途 阅读(575) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理