1、事务:一般是指要做的或所做的事情;计算机中的一般是指去访问并可能更新数据库中的各项数据项的一个程序执行单元。
2、事务的四个特性(ACID):
(1)原子性(Atomicity):事务包含的所有操作要么全部成功,要么全部失败回滚;成功必须要完全应用到数据库,失败则不能对数据库产生任何影响。
(2)一致性(Consistency):事务执行前和执行后必须处于一致状态。
(3)隔离性(Isolation):当多个用户并发访问数据库时,数据库为每个用户开启的事务,不会被其他事务的操作所干扰,多个并发事务之间要相互隔离。
(4)持久性(Durability):事务一旦被提交,那么数据库中的数据改变是永久性的,即便是数据库在遇到故障的情况下也不会丢失事务的操作。
3、事务的四种隔离级别:
(1)Read uncommitted(读未提交):最低级别,任何情况都会发生。
(2)Read Committed(读已提交):可避免脏读的发生。
(3)Repeatable read(可重复读):可避免脏读、不可重复读的发生。
(4)Serializable(串行化):避免脏读、不可重复读,幻读的发生。
四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。像Serializable这样的级别,就是以锁表的方式(类似于Java多线程中的锁)使得其他的线程只能在锁外等待,所以平时选用何种隔离级别应该根据实际情况。
对JDBC操作数据库来说,一个Connection对象相当于一个链接,该Connection对象设置的隔离级别只对该connection对象有效,与其它链接connection对象无关。
Mysql数据库支持上面四种隔离级别的默认隔离级别是:Repeatable read(可重复读);
Oracle数据库中只支持seralizable(串行化)级别和Read committed(读已提交);默认的是Read committed级别;