
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
数据库事务是程序员在学习数据库架构的时候需要重点掌握的一个编程技术,而本文我们就通过案例分析来简单了解一下,数据库事务基础知识分享。
事务定义
在数据库管理系统中,事务是单个逻辑或工作单元,有时由多个操作组成,在数据库中以一致模式完成的逻辑处理称为事务。一个例子是从一个银行账户转账到另一个账户:完整的交易需要减去从一个账户转账的金额,然后将相同的金额添加到另一个账户。
事务特性
原子性(atomicty)
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么全部不执行。
一致性(consistency)
事务的执行不能破坏数据库数据的完整性和一致性。一致性指数据满足所有数据库的条件,比如字段约束、外键约束、触发器等,事务从一致性开始,以一致性结束。
隔离性(isolation)
事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务是透明的。
持久性(durability)
对于提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
注:DBMS一般采用日志来保证事务的原子性、一致性和持久性。
事务隔离级别
并发事务带来的问题
不可重复读的重点是数据修改场景,幻读的重点在于新增或者删除场景。
事务隔离级别
SQL92标准定义了4种隔离级别的事务
大多数数据库系统如oracle的默认隔离级别都是Readcommitted,mysql默认为可重复读,InnoDB和XtraDB存储引擎通过多版并发控制(MVCC,MultivesionConcurrencyControl)解决了幻读问题,Repeatableread是Mysql默认的事务隔离级别,其中InnoDB主要通过使用MVVC获得高并发,使用一种被称为next-key-locking的策略来避免幻读。
事务模型
事务提交模型
显式事务:又称自定义事务,是指用显式的方式定义其开始和结束的事务,当使用starttransaction和commit语句时表示发生显式事务。
隐式事务:隐式事务是指每一条数据操作语句都自动地成为一个事务,事务的开始是隐式的,事务的结束有明确的标记。即当用户进行数据操作时,系统自动开启一个事务,事务的结束则需手动调用commit或rollback语句来结束当前事务,在当前事务结束后又自动开启一个新事务。
自动事务:自动事务是指能够自动开启事务并且能够自动结束事务。在事务执行过程中,如果没有出现异常,事务则自动提交;当执行过程产生错误时,则事务自动回滚;一条SQL语句一个事务。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。