Oracle 锁和表分区

本文详细介绍了Oracle数据库中的锁机制,包括锁的优点、种类如行级锁和表级锁及其语法示例。此外,文章还讨论了死锁的三种形成原因,并提出了避免死锁的策略。在表分区部分,阐述了表分区的优点和四种分区方法:范围分区、散列分区、列表分区以及复合分区,以提高数据库的可管理和性能。
摘要由CSDN通过智能技术生成

锁和表分区

锁的优点

①一致性:一次只允许一个用户修改数据,从而提供统一数据

②完整性:向所有用户提供正确的数据

③并发性:允许多个用户访问同一数据

锁的种类

①行级锁

行级锁会自动在被DML操作(insert,update,delete,select...for update)涉及的所有行上进行操作

行级锁是一种排它锁(独占锁)

语法

select.....for update  wait n    ----wait指定等待其他用户的时间  nowait表示不等待

使用select.....for update 的好处:

1.防止无限期等待被锁定的行

2.允许在应用程序中对锁的等待时间进行控制

②表级锁

语法

lock   table    table_name   In   lock_name   MODE

lock_name是锁定的模式

表级锁包含以下几种

①行共享(row share, as  )允许其他用户访问或锁定该表,但是禁止排它锁锁定整个表使用select....for update语句会在表上自动应用行共享 

②行排他(row exclusive)与行共享模式相同,同时禁止其他用户在此表上使用行共享,使用insert update 和delete语句会在表上自动应用行排他

③共享锁(share,s)仅允许其他用户查询表中的行,但不允许插入,更新和删除,多个用户可以在同一张表上添加共享锁

④;排它锁(exclusive,X)对表执行最大的限制,除了允许其他用户查询该表数据,将不允许做任何操作和添加任何锁

死锁的形成

打个比方,假设有P1和P2两个进程,都需要A和B两个资源,现在P1持有A等待B资源,而P2持有B等待A资源,两个都等待另一个资源而不肯释放资源,就这样无限等待中,这就形成死锁,这也是死锁的一种情况。给死锁下个定义,如果一组进程中每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。

竞争不可抢占资源引起死锁
也就是我们说的第一种情况,而这都在等待对方占有的不可抢占的资源。
竞争可消耗资源引起死锁
有p1,p2,p3三个进程,p1向p2发送消息并接受p3发送的消息,p2向p3发送消息并接受p2的消息,p3向p1发送消息并接受p2的消息,如果设置是先接到消息后发送消息,则所有的消息都不能发送,这就造成死锁。

进程推进顺序不当引起死锁
有进程p1,p2,都需要资源A,B,本来可以p1运行A --> p1运行B --> p2运行A --> p2运行B,但是顺序换了,p1运行A时p2运行B,容易发生第一种死锁。互相抢占资源。

避免死锁:  
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。 
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。 

避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。 

表分区

表分区的优点

①提高数据库的可管理性

②提高数据库的性能

表分区的四中分区方法

①范围分区

  1. create table graderecord  
  2.   (  
  3.   sno varchar2(10),  
  4.   sname varchar2(20),  
  5.   dormitory varchar2(3),  
  6.   grade int  
  7. )  
  8. partition by range(grade)  
  9. (  
  10.   partition bujige values less than(60), --不及格  </
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值