一、事务(笔试面试常考)
1.1 事务概述
- 在MySQL数据库中只有InnoDB和BDB存储引擎支持事务,MyISAM存储引擎不支持事务。默认的存储引擎是InnoDB;
- 事务就是将一组SQL语句放在同一批次内去执行;
- 如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行;
- 事务用来保证数据的完整性、正确性,操作的原子性以及并发访问时数据的隔离性;
- 事务用来管理INSERT、UPDATE、DELETE等DML语句;
- 事务必须手动开启、提交、回滚,也可以进行自动提交事务;
- 事务的作用范围是一个SESSION(会话控制)中,一个SESSION中可以有多个事务。常见的SESSION:JDBC中的一个Connection对象,也就是一个线程;命令行窗口也是一个SESSION;
- 事务有中有安全点,可以理解为将大事务拆分成小事务,回滚时只回滚到对应的安全点,并不是回滚全部回滚数据。
1.2 事物的四大特性(ACID)(重点)
原子性(Atomicity):
- 事务是一个操作最基本单元,其对数据的新增、修改、删除,要么全都执行,要么全都不执行,不会结束在中间某个环节;
- 事务一旦被提交,在事务期间对数据的新增、修改、删除,必须全部执行;
- 事务一旦被回滚,在事务期间对数据的新增、修改、删除,必须全部回退。新增数据,必须删除;修改数据必须恢复;删除数据必须重新回归,就好像这个事务从来没有被执行过一样;
- 在一个SESSION中,也就是一个会话期间,事务既没有提交也没有回滚,当会话结束时,数据并不会发生修改.
隔离性(Isolation):
- 数据库允许多个事务同时对相同的数据进行读取和修改,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致.如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。
持久性(Durable):
- 事务完成之后,它对于数据的修改是永久性的,即使系统出现故障也不会丢失.在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
一致性(Consistent):
- 在事务开始之前和事务结束以后,数据库数据的完整性没有被破坏;
- 这表示写入的数据必须完全符合所有的预设规则,这包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作。(比如:A向B转账,不可能A扣了钱

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



