锁和表分区
锁的优点
①一致性:一次只允许一个用户修改数据,从而提供统一数据
②完整性:向所有用户提供正确的数据
③并发性:允许多个用户访问同一数据
锁的种类
①行级锁
行级锁会自动在被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资源,两个都等待另一个资源而不肯释放资源,就这样无限等待中,这就形成死锁,这也是死锁的一种情况。给死锁下个定义,如果一组进程中每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。
竞争不可抢占资源引起死锁
竞争可消耗资源引起死锁
进程推进顺序不当引起死锁
死锁的预防是通过破坏产生条件来阻止死锁的产生,但这种方法破坏了系统的并行性和并发性。
死锁产生的前三个条件是死锁产生的必要条件,也就是说要产生死锁必须具备的条件,而不是存在这3个条件就一定产生死锁,那么只要在逻辑上回避了第四个条件就可以避免死锁。
避免死锁采用的是允许前三个条件存在,但通过合理的资源分配算法来确保永远不会形成环形等待的封闭进程链,从而避免死锁。该方法支持多个进程的并行执行,为了避免死锁,系统动态的确定是否分配一个资源给请求的进程。
表分区
表分区的优点
①提高数据库的可管理性
②提高数据库的性能
表分区的四中分区方法
①范围分区
- create table graderecord
- (
- sno varchar2(10),
- sname varchar2(20),
- dormitory varchar2(3),
- grade int
- )
- partition by range(grade)
- (
- partition bujige values less than(60), --不及格 </