
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
事务是程序员在开发数据库的时候会接触到的一个编程概念,而本文我们就通过案例分析来简单了解一下,数据库事务基础知识分享。
1、事务简介
通俗一点理解就是将一组对数据的操作(增、删、改、查)看做成一个逻辑单元,要么都执行,要么都不执行,确保数据一致性。
2、事务特性(ACID)
原子性(Atomicity)
指事务内所有操作要么一起执行成功,要么都一起失败(或者说是回滚);如事务转账案例:A给B转账,A把钱扣了,但B没有收到;可见这种错误是不能接受的,终会回滚,这也是原子性的重要性。
一致性(Consistency)
指事务执行前后的状态一致,如事务转账案例:A给B互相转账,不管怎么转,终两者钱的总和还是不变;
持久性(Durability)
指事务一旦提交,数据就已经永久保存了,不能再回滚;
隔离性(Isolation)
指多个并发事务之间的操作互不干扰,但是事务的并发可能会导致数据脏读、不可重复读、幻读问题,根据业务情况,采用事务隔离级别进行对应数据读问题处理。
3、事务隔离级别
读未提交(Readuncommitted)
指一个事务读取到其他未提交事务的数据。可能导致数据脏读。
读已提交(Readcommitted)
指一个事务只能读取到其他事务已提交的数据,从而解决了脏读的问题。但可能导致数据不可重复读;
可重复读(Repeatableread)
指事务只要一开启,就不允许其他事务进行修改操作,从而解决了不可重复读问题。但可能导致数据幻读;
转账案例:A经常给B转账,到年底了,需要查账,然后开启了一个事务进行查询统计,刚开始查询只是10条转账记录,正准备统计时,因为紧急情况A需要给B转一笔钱应急,从而新增了一条新记录,并提交;而查账事务正在统计中,后发现转账额和看到的10条转账记录不匹配。这种情况就是幻读
序列化(Serializable)
指事务之间只能串行话执行,就像队列一样,排队进行,这样就解决了幻读的问题,但是这种级别的并发性能不高,非特殊需求,这种级别一般不用。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。