//

Information for details

事务处理系统的特性

1.原子性

  一个事务必须被视为一个不可分割的最小工作单元,整个失误中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中一个部分操作,这就是事务的原子性。

2.一致性

  数据库总是从一个一致性的状态转换到另外一个一致性的状态。在前面的例子中,一致性确保了,即使在执行第三,四条语句之间时系统崩溃,支票账户中也不会损失,因为事务最终没有提交,所以事物中所作的修改也不会保存到数据库中。

3.隔离性

  通常来说,一个事务所做的修改在最终提交以前,对事务是不可见的。在前面的例子中,当执行完第三,四语句还未开始时,此时有另外一个账户汇总程序开始运行,则其看到的支票账户的余额并没有减去。后面我们讨论隔离级别时候,会发现为什么我们要说“通常来说”是不可见的。

4.持久性

  一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。持久性是个有点模糊的概念,实际上持久性也分很多不同的级别。有些持久性策略能够提供非常强的安全保障,而有些则未必。而且不可能做到100%的持久性保证的策略。

事物的ACID特性可以确保银行不会弄丢你的钱。而在应用逻辑上,要实现这一点非常困难,甚至说是不可能完成的任务。一个兼容ACID的数据库系统,需要做很多复杂但可能用户并没有察觉到的工作,才能确保ACID的实现。

就像锁粒度的升级会增加系统开销一样,这种事物处理过程中的额外安全性,也会需要数据库系统做更多额外工作。一个实现了ACID的数据库,相比没有实现ACID的数据库,通常会需要更强的CPU的处理能力,更大的内存和更多的磁盘空间,这也是MySQL的存储引擎架构可以发挥优势的地方。用户可以根据业务是否需要事务处理,来选择合适的存储引擎。对于一些不需要事务的查询类应用,选择一个非实物性的存储引擎,可以获得更高的性能。即使存储引擎不支持事务,也可以通过LOCK TABLES语句为应用提供一定程序的保护,这些选择用户都可以自主决定。

  云南然成科技有限公司是一家定位于高端网站建设、系统开发、APP开发、软件定制的高新科技公司。我们的团队成员曾来自不同行业,拥有不同背景,公司成立之前,都在互联网行业从事相关工作多年,一直奋斗在APP开发、微信开发、系统开发、商城网站开发第一线。多年的累积是一种财富,我们擅于运用所知所得诠释他们眼中的认知,更善于站在客户的立场上去思考,跨界创新,整合设计。


  • 滇公网安备 53010202001388号