简介:数据库提供了多种保持数据完整性的保证机制,如约束,触发器,事物和锁管理等
事物管理:保证一批相关数据库中数据操作能全部被完成,从而保证数据的完整性
锁管理:执行多个活动事物的并发控制
---------------------------------------------------------------------------------------------------------------------
事务的属性:ACID
原子性,一致性,隔离性,持久性
保存点:
savepoint aa;
rollback to aa;
---------------------------------------------------------------------------------------------------------------------
锁:不使用锁会出现 脏读,幻读,不可重复读等问题
锁的分类:
数据锁:DML锁 保护数据的完整性
字典锁:DDL锁 保护数据库对象的结构
内部锁和闩:保护内部数据库机构
分布式锁和并行高速缓存管理锁:用户OPS(并行服务器)中
数据锁分类:
共享锁(S锁):
排他锁(X):
行级锁(RS):
行级排他锁(RX):
共享行级排他锁(SRX):
---------------------------------------------------------------------------------------------------------------------
死锁的原因:
请求与保持条件:获取资源的进程可以同时申请新的资源
非剥夺条件:已经分配的资源不能从该进程中剥夺
循环等待条件:多个进程构成环路,并且其中每个进程都在等待相邻进程正占用的资源
互斥条件:资源只能被一个进程使用
会造成死锁的资源:
锁:等待获取资源的锁
工作线程:等待可用工作线程
内存:并发请求等待获得内存
并行查询执行的相关资源:
减少死锁的策略:
在所有事务中以相同的次序使用资源
让事务尽可能简短并且在一个批处理中
为死锁超时参数设置一个合理范围,超时则自动放弃本次操作
避免在事务内和用户进行交互,减少资源的锁定时间