oracle锁的概念1
Posted pakichan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle锁的概念1相关的知识,希望对你有一定的参考价值。
1、锁是什么
数据库是一个多用户使用的共享资源,当多个用户并发的存储取数据的时候,在数据库中就会产生多个事务同时存取同一数据的时候,若对并发操作不加控制就可能读取和存储不正确的数据,破坏数据库的一致性。
加锁是实现数据库并发的一个很重要的技术,当事务在对某个对象数据进行操作的时前,系统会先收到请求,对其加锁,枷锁后事务对该数据对象有了控制,在该事务释放锁之前。其他的事务不能对此数据对象进行更新操作。
可防止多个会话同时更改统一数据
是在指定语句的最低可能级别自动获取的
2、锁的分类
2.1DML锁:
数据锁:保护数据,修改数据
表级锁(TM锁)、事务锁或者行级锁(TX锁)
加锁方式:
a、共享锁,用于TM锁
b、独占锁:用于TM锁
c、共享更新锁 用于TX锁
2.2 DDL锁:
修改结构
保护struture of schme objects:表和试图的相关定义。
2.3SYSTEM锁
数据库级的,内存级的,latch
latch:内存中的资源锁
lock:数据库对象(表、索引等)锁
导致latch争用而等待的原因很多,内存中很多资源都可能存在争用。
常见的两类:
共享池中的latch争用
数据缓存池latch争用
最常见的集中共享池里的latch 是library cache
select * from v$latchname where name like ‘library cache%‘;
资源的争用可以通过如下sql来查看:
select event,count(*) from v$session_wait group by event;
数据缓冲池latch争用 最常见的latch争用有:
(1)buffer busy waits
(2)cache buffer chain
以上是关于oracle锁的概念1的主要内容,如果未能解决你的问题,请参考以下文章