写在文章开始部分:所有题均来自于JAVA面试
1.什么是事务?事务有哪些特性?
定义:是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元);
事务四大特性(ACID):
事务特性 | 含义 |
---|---|
原子性(atomicity) | 每个事务都是一个整体,不可再拆分,事务中所有sql要么都执行成功,要么都失败 |
一致性(Consistency) | 事务在执行前数据库的状态和执行后数据库的状态保持一致 |
隔离性(Isolation) | 事务和事务之间应该是相互独立的,互相不产生影响 |
持久性(Durability) | 一旦事务执行成功,对数据库的修改是持久的,就算关机也是保存下来的 |
事务四大隔离级别
事务处理的三个问题:
脏读:脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成两个事务得到的数据不一致。
不可重复读:“不可重复读”现象发生在当执行SELECT 操作时没有获得读锁或者SELECT操作执行完后马上释放了读锁;另外一个事务对数据进行了更新,读到了不同的结果。不可重复读和脏读的区别是,脏读是某一事