数据库锁的详细介绍 数据库锁是数据库管理系统中的一种机制,用于保护数据库对象不被修改。它可以防止对象被两个不同的用户同时修改,数据库系统创建了锁这种复杂的数据结构,来实现锁定机制。 锁的作用: 1. 坚持一致性和完整性:在事务处理期间,数据和对象保证它们的一致性和完整性。 2. 提供队列结构:锁提供了一种队列结构,允许所有会话都加入到等候对象的队列中。 3. 自动处理锁机制:锁的持续时间等于被提交事务的长度或处理时间。 锁的模式: Oracle 中的锁模式: 1. ROW SHARE(RS):为了更新,每个事务在表中锁定了行,但允许其他事务锁定表中的其他行。 2. ROW EXCLUSIVE(RX):为了更新,每个事务在表中锁定了行,但不允许其他事务锁定表中的其他行。 3. SHARE(S):某个事务以一个模式锁定了表,这个模式允许其他事务以 SHARE 模式锁定这个表,但不允许在这个表中进行任何更新。 4. SHARE ROW EXCLUSIVE(SRX):在 SHARE MODE 中,不允许其他事务锁定这个表,且不允许 DML 语句。 5. EXCLUSIVE(X):这个表被锁定了,并且不允许其他会话锁定这个表,或者把 DML 语句提交到这个表。 SQL Server 中的锁模式: 1. SHARE(S):共享锁取得资源共享锁。 2. UPDATE(U):更新锁取得资源更新锁。 3. EXCLUSIVE(X):独占锁独占锁在准备修改数据时向事务提供。 4. INTENT SHARE(IS):共享意向锁表示进程当前持有或想持有低层资源(页或行)的共享锁。 5. INTENT UPDATE(IU):更新意向锁表示进程当前持有或想持有低层资源(页或行)的更新锁。 6. INTENT EXCLUSIVE(IX):独占意向锁表示进程当前持有或想持有低层资源(页或行)的独占锁。 7. BULK UPDATE LOCK(BU):批量锁批量复杂使用的批量更新锁。 8. RANGE LOCK(RL):键范围锁 SQL Server 中的键范围锁隔离事务之间对数据的修改,使事务每次返回相同的结果集。 死锁: 死锁就是两个进程都在等待对方持有的资源锁,要等对方释放持有的资源锁之后才能继续工作,它们互不相让,坚持到底,实际上,双方都要等到对方完成之后才能继续工作,而双方都完成不了。 在 Oracle 中,可以通过查看日志文件来检测死锁。例如,在 Oracle SQL*Plus 中执行 UPDATE 语句时,如果出现死锁,系统将检测到死锁,并记录在日志文件中。
剩余10页未读,继续阅读
- 粉丝: 0
- 资源: 34
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助