当前位置:Gxlcms > 数据库问题 > oracle锁的概念1

oracle锁的概念1

时间:2021-07-01 10:21:17 帮助过:19人阅读

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

标签:对象   library   group by   一个   event   dml   释放   acl   查看   

人气教程排行