1:事务的状态:
2:编写事务的时候应该遵循的原则
、(1): 在事务处理期间不要求对用户输入:
(2): 浏览数据时,尽量不打开是事务
(3):在所有预备的数据分析之前,不启动事务
(4);必须进行修改时启动事务,执行完成修改操作语句后立即提交或回退:
3:并发控制:
多个用户同时对同一数据对象进行读写操作,这种现象称为并发操作,显然并发操作
可以充分利用系统资源,提高效率,但若对这种并发操作不加以控制,它可能会破坏数据的
一致性
4。并发的错误情形;
1:两个事务读写同一数据而出现数据的不一致性错误:
2:数据丢失更新问题:
3,脏读:
5:封锁技术:
封锁是事务并发控制的主要手段,其作用是在事务T对某一数据对象(例如表)等、
进行操作前,先向系统发出请求,对其加锁,加锁后事务T对该数据对象有一定的控制,在事务
T释放所加的锁之前,其他事务不能更新此数据对象:
对锁机制的研究要具备两个条件:
1.数据量大
2.多个用户同时并发
如果缺少这两个条件,数据库不容易产生死锁问题。研 究起来可能会事倍功半。如果这两个条件都有,但你还是按数据库缺省设置来处理数据,则会带来很多的问题,比如:
1)丢失更新
A,B两 个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果
2)脏读
A用户修改了数据时,B用户也在读该数据,但A 用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致
3)不可重复读
B用户读出该数 据并修改,同时,A用户也在读取数据,此时A用户再读取数据时发现前后两次的值不一致
SQL SERVER 作为多用户数据库系统,以事务为单位,使用锁来实现并发控制。SQLSERVER使用“锁”确保事务完整性和数据一致性。
(1)封锁类型:(查资料)
s锁: 共享性封锁:
X锁: 排它锁:
例子:
以下在sql server 2005中会会话设置了TRACSACTION ISOLATION LEVEEL.
对于事务开始后的每个sql语句,系统将所有共享琐一直保持,直到事务结束:
use teaching_mis
go
set transaction isolation level repeatable read;
go
begin transaction;
go
select * from course
go
select * from students
go
commit transaction:
(2)
封锁的相容性及说明:
T1/T2
x
s
-
x
N
N
Y
s
N
Y
Y
-
Y
Y
Y