一.数据库的事务应当具有以下四种特性:
Atomic(原子性)
事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要么全部成功,要么全部失败。
Consistency(一致性)
数据不会因为事务的执行而遭受破坏.只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初状态。
实现:DBMS的完整性子系统执行测试任务
{
`完整性约束:域约束,基本表约束和断言
}
Isolation(隔离性):事务允许多个用户对同一个数据进行并发访问,而不破坏数据的正确性和完整性。
事务的隔离性一般由事务的锁来进行控制。
实现:DBMS的并发控制子系统
{
1.丢失更新问题
2.读脏数据
3.不可重复读问题
}
Durability(持久性):事务结束后,事务处理的结果必须能够得到固化。
实现:恢复管理子系统
2.DB锁(并发控制的手段)
独占锁(排他锁):只允许一个事务访问数据
共享锁:允许其他事务继续使用锁定的资源
更新锁
锁就是保护指定的资源,不被其他事务操作,锁定的资源包括行、页、簇、表和数据库。为了最小化锁的成本,SQL Server自动地以与任务相应等级的锁来锁定资源对象。锁定比较小的对象,例如锁定行,虽然可以提高并发性,但是却有较高的开支,因为如果锁定许多行,那么需要占有更多的锁。锁定比较大的对象,例如锁定表,会大大降低并发性,因为锁定整个表就限制了其他事务访问该表的其他部分,但是成本开支比较低,因为只需维护比较少的锁。