-------DML与TPL 数据管理语句与数据库事务----------
–数据库事务有4大特性:
–原子性:在同一个事务中的操作不可以拆分,要么同时成功,要么同时失败;
–隔离性:没有提交的事务中的更新操作对其他事务是隔离的,在当前事务可查,其他事务不可查;
–一致性:数据库开启或事务结束后,每次查询出的数据都是一致的
–持久性:事务一旦提交,数据将被持久化到数据库系统中,发生意外程序崩溃退出,数据仍然存在
–结束事务的几种方法:
–提交或回滚事务:commit、rollback
–在开启事务后,执行DDL也会提交事务
–在sqlplus中正常退出程序也会提交事务
–程序或系统异常或崩溃时,会回滚事务
–在同一个窗口中,第一次执行DML语句会打开数据库事务
–在事务中的锁机制
–在事务中,如果修改了数据库的数据,则在事务结束前数据会被锁定;
–死锁:在数据库事务中,如有两个或以上事务进行多组更新操作,这些操作可能进行了互锁,造成死锁;
–在操作数据库时,或多线程编程需要注意避免出现事务的死锁;
–行级锁和表级锁:
–行级锁:只锁定单行数据,使该行数据不被其他事务修改
–表级锁:常见的表级锁会锁表结构,在事务中如果修改了数据,在事务结束前不可以修改表结构
–数据库事务的事务隔离级别:Read uncommitted 读未提交、Read committed 读已提交、Repeatable read 重复读、Serializable 序列化
–默认系统事务隔离级别是READ COMMITTED,也就是读已提交
–脏读,幻读,不可重复读