度量快速开发平台-专业、快速的软件定制快开平台

标题: Oracle数据库中的锁机制 [打印本页]

作者: 万望    时间: 2020-5-18 01:22
标题: Oracle数据库中的锁机制

    数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

  在数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁)。当数据对象被加上排它锁时,其他的事务不能对它读取和修改;加了共享锁的数据对象可以被其他事务读取,但不能修改。

  Oracle数据库锁分类(根据保护对象的不同):

  (1) DML lock(data locks,数据锁):用于保护数据的完整性;

  (2) DDL lock(dictionary locks,字典锁):用于保护数据库对象的结构(例如表、视图、索引的结构定义);

  (3) Internal locks 和latches(内部锁与闩(shuān)):保护内部数据库结构;

  (4) Distributed locks(分布式锁):用于OPS(并行服务器)中;

  (5) PCM locks(并行高速缓存管理锁):用于OPS(并行服务器)中。

  在Oracle中最主要的锁是DML(也可称为data locks,数据锁)锁。DML锁的目的在于保证并发情况下的数据完整性。在Oracle数据库中,DML锁主要包括TM锁和TX锁,其中TM锁称为表级锁,TX锁称为事务锁或行级锁。

  锁出现在数据共享的场合,用来保证数据的一致性。当多个会话同时修改一个表时,需要对数据进行相应的锁定。锁有“只读锁”、“排它锁”,“共享排它锁”等多种类型,而且每种类型又有“行级锁” (一次锁住一条记录),“页级锁” (一次锁住一页,即数据库中存储记录的最小可分配单元),“表级锁” (锁住整个表)。

  若为“行级排它锁”,则除被锁住的行外,该表中其他行均可被其他的用户进行修改(Update)或删除(delete)。若为“表级排它锁”,则所有其他用户只能对该表进行查询(select)操作,而无法对其中的任何记录进行修改或删除。当程序对所做的修改进行提交(commit)或回滚(rollback)后,锁住的资源便会得到释放,从而允许其他用户进行操作。如果两个事务,分别锁定一部分数据,而都在等待对方释放锁才能完成事务操作,这种情况下就会发生死锁。



作者: 陈晓龙    时间: 2020-5-18 19:53
很少用到起样!
作者: 万望    时间: 2020-5-19 11:29
陈晓龙 发表于 2015-12-18 19:53
很少用到起样!

这是介绍,大哥
作者: 万望    时间: 2020-5-19 11:30
陈晓龙 发表于 2015-12-18 19:53
很少用到起样!

这是介绍,大哥
作者: 张兴康    时间: 2020-5-21 14:01
收藏一个
作者: 陈晓龙    时间: 2020-5-21 18:40
万望 发表于 2015-12-19 11:30
这是介绍,大哥

哦,原来是介绍所!
作者: 陈晓龙    时间: 2020-5-21 18:40
万望 发表于 2015-12-19 11:30
这是介绍,大哥

哦,原来是介绍所!
作者: 陈晓龙    时间: 2020-5-21 18:40
万望 发表于 2015-12-19 11:30
这是介绍,大哥

哦,原来是介绍所!
作者: 陈晓龙    时间: 2020-5-21 18:40
万望 发表于 2015-12-19 11:30
这是介绍,大哥

哦,原来是介绍所!
作者: 万望    时间: 2020-5-21 21:25
陈晓龙 发表于 2015-12-21 18:40
哦,原来是介绍所!

你一下水了4贴啊
作者: 陈晓龙    时间: 2020-5-22 19:18
万望 发表于 2015-12-21 21:25
你一下水了4贴啊

网络卡,以为没回复起,多点了几下!
作者: 陈晓龙    时间: 2020-5-22 19:18
万望 发表于 2015-12-21 21:25
你一下水了4贴啊

网络卡,以为没回复起,多点了几下!
作者: 王爱东    时间: 2020-5-22 20:19
这个能用到。特别是并发业务的时候,重点就是要考虑这部分的。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2