勿传网上!严禁谋利! Oracle学习笔记
常彦博
十七、事务
17.1 transaction
交易,事务;(一笔)交易,(一项)事务。
client端建立连接 connect jsd1304/jsd1304(sqlplus/sql developer/jdbc) DDL操作: create table (column 列 datatype 数据类型 constraint约束); alter table 对列、约束等的操作 drop table cascade constraint purge; DML操作:insert、update、delete TCL操作:commit、rollback,数据才真正入库 table:account column id,balance余额 row:A B update account set balance = balance-1000 where id='A'; update account set balance = balance+1000 where id='B'; 交易:包含2个update,一笔交易应看作一个原子操作:要做一起作,要么都不作 帐平,不是单条DML,而是一组DML+commin、rollback(transaction) 17.2定义 事务是由一组DML语句和commit/rollback(TCL)组成,是改变数据库数据的最小逻辑单元。 1)如果是commit,表示数据入库;如果是rollback,表示取消所有的DML操作。 2)事务的结束:commin/rollback,DDL语句自动提交,DML一定要有显式commit。用程序传数据入库也要传一个事务! 3)事务的开始:上一个事务的结束就是下一个事务的开始。 ? 注意事项:我们传送的是一个事务,而不是简单的DML语句了!数据库中也都是一个个事务。切记!! 17.3事务的特性:ACID 1)原子性(atomicity):一个事务或者完全发生,或者完全不发生。由DML和TCL共同完成的!! 2)一致性(consistency):事务把数据库从一个一致状态转变到另一个状态。 3)隔离性(isolation):在事务提交之前,其他事务觉察不到事务的影响。 4)持久性(durability):一旦事务提交,它是永久的。
17.4事务的隔离级别
数据库应用程序中最常用的隔离级别。
Read committed:一个事务只可以读取在事务开始之前提交的数据和本事务正在修改的数据。
17.5数据库开发的关键挑战
在开发多用户、数据库驱动的应用程序中,关键性的挑战之一是要使并行的访问量达到
35
勿传网上!严禁谋利! Oracle学习笔记
最大化,同时还要保证每一个用户(会话)可以以一致的方式读取并修改数据。
1)锁(lock)机制:用来管理对一个共享资源的并行访问 2)多版本一致读:
①非阻塞查询:写不阻塞读,读不阻塞写 ②一致读查询:在某一时刻查询产生一致结果
常彦博
17.6锁的概念
1)排他锁(X锁):如果一个对象上加了X锁,在这个锁被采用后,直到commit或rollback释放它之前,该对象上不能施加任何其他类型的锁。
2)共享锁(S锁):如果一个对象被加上了S锁,该对象上可以加其他类型的S锁,但是,在该锁释放之前,该对象不能被加任何其他类型的X锁。
17.7 Oracle的锁机制
为确保并发用户能正确使用与管理共享资源,如表中的记录,Oracle引进锁机制。 1)对表的数据进行写操作时,系统会自动加两类,共3种锁。 ①DML锁:用于保护数据的完整性,会加以下两种锁(对DML操作而言的,用排队机制wait)。
TX锁:即事务锁(行级锁),类型为X锁;操作哪行记录就加排他锁 TM锁:即意向锁(表级锁),属于一种S锁;操作哪个表就加共享锁
? 注意