关于数据库中的事务的理解

数据库事务是一组操作单元,它是由一个sql语句或者是一组sql语句,事务保证了这些sql语句要么全部成功执行,要么全部不执行。
⭐事务的特性(ACID)
A:原子性
原子性是指事务中的操作,要么全部都做,要么全部都不做
C:一致性
一致性是指事务在执行操作后,数据一定要满足业务约束。
I:隔离性
隔离性是指数据库允许多个并发的事务同时对其中的数据进行读写或修改的能力,隔离性可以防止多个事务的并发执行时,由于它们的操作命令交叉执行而导致数据的不一致性。
D:持久性
持久性是指事务对数据库执行的操作是持久化的,不会说事务执行结束了,数据又变回去了。
错读|脏读:当一个事务修改数据后,另一个事务读取了数据,这时由于某些原因,第一个事务撤销了修改,就会造成第二个事务拿到的数据不准确,造成脏读|错读。
非重复读取:是指一个事务在读取了数据后,第二个事务又修改了数据,这个时候第一个事务再次读取数据,就会导致两次读到的数据不一样。非重复读取就是一个事务两次读取的数据不一样。
假读:如果一个事务基于某个条件读取数据后,另一个事务则更新了同一个表中的数据,这时第一个事务再次读取数据时,根据搜索的条件返回了不同的行,这就是假读。
(2)选择隔离层
关于数据库中的事务的理解
Oracle支持上述四种隔离层中的两种:read committed 和serializable。除此之外oralce中还定义read only 和 read write隔离层。
Read committed: 这是oracle默认的隔离层。
Serializable:事务与事务之间完全隔开,事务以串行的方式执行,这并不是说一个事务必须结束才能启动另外一个事务,而是说这些事务的执行的结果于一次执行的事务的结果一致。

Read only和 read write 当使用read only时,事务中不能有任何修改数据库中数据的操作语句,这包括 insert、update、delete、create语句。Read only是serializable的一个子集,区别是read only 只读,而serialzable可以执行DML操作。Read write它是默认设置,该选项表示在事务中可以有访问语句、修改语句.但不经常使用.