SQL Server -----事务管理
事务就是让一个数据库中的多个表更新时同步操作,目的就是为了数据库各表的一致性。因此它具有:原子性、一致性、隔离性、持久性四大特征
原子性:把事务当成一个工作单元,要么执行,要不不执行,不能说值执行一部分。
一致性:执行事务完成时,数据保持一致性。
隔离性:当事务执行时不能被其它执行的操作打扰,保持一定的独立性
持久性:完成事务对于系统的影响是永久的,即使出现系统故障也是如此。
事务的类型:
隐式事务:指执行SQL Server数据修改语句时称为隐式事务。
显示事务:以begin transaction 开头,commit transaction 结束
如果事务执行失败时需要用到事务回滚使数据库恢复到处理之前的状态。
以上事务处理过程可用张图解释:
锁
当多个用户同时访问一个资源时可能发生数据的不一致性,为了解决这一问题锁应运而生。
锁的类型:
独占锁
只允许操作的程序使用,其它任何操作不被接受。即允许SQL Server的insert/update/delete 命令
共享锁
可以被多用户读取,但是不能被修改。
更新锁
为了防止死锁而设立的,在SQL Server 更新之前,对数据对象进行更新锁锁定,使数据不允许被修改。
如果两个用户分别锁定了不同的对象,且又试图访问对方的对象就会产生死锁
死锁的解决办法:
1.尽量避免并发执行修改数据的语句
2.每个事物一次性加锁
3.规定封锁顺序
4.事务执行时间不能太长