说说你是如何理解Oracle数据库中latch和enqueue lock的?

简介:

 

答:这个问题每个人可能有每个人不同的想法,每个人的出发点可能也都不同,我的出发点先从来源找,是什么原因产生了lock&latch。然后再从不同的角度去解释lock&latch的本质。

Lock

1.来源于业务也消失于业务,基本上是由于业务流程安排的不合理产生的,是一种保护业务的锁。

2.还来源于并发,俗话说没有并发就没有lock,当大量会话都要去争强一个修改权时,我们需要的是一种有序的,排队的方式来获得访问权限。这就好比大家在坐公车的时候,排队上车排队下车,谁也不能够拥挤。

3.独占资源,为什么这么说,家里的锁、银行保险箱都是为了保护贵重物品而存在,oracle的锁也一样,当我在修改一条记录的时候就相当于我自己独占了,别人要等我修改完毕后才能获取,这就是锁的特性。

4.保证读一致性,什么是读一致性,简单的通俗的说,同一时间大家看到的数据都是一样的,这么说大家好理解一些,实际要比这个复杂哦。这样的好处大家能够感受到对数据变化是统一的,避免了数据不对称造成的误解。举个例子  当你看超女演唱会的时候需要先购票,你要和她一起看这时候就需要买2张票,当你在买票的过程中,售票员需要先把2张票锁定(不管真买假买)否则在你拿钞票的过程中别人给抢购了,此时女朋友就会把今天变成你的世界末日这样不太好吧!保证看到的和实际的要一致,这就是一致性的来源。

5.维护事务完整性,这又从事务的角度来探讨lock了,大家都知道关系型数据库就是为事务而生的,只有在关系型数据库中才有事务这个概念。什么是事务的完整,就是没有提交的事务对他人是不可见的,例如 我修改一条记录,这条记录是在数据块中真真切切的修改了,但没有提交,此时别人是不可见的,别人要想查询只能从undo段中找记录前快照来查询。事物完整性是数据安全的守护神。

6.锁的信息是数据块上的一个属性是物理的,并不是逻辑上属于某个表或某几行的。


 

 

 

Latch

1.来源于系统资源的紧张不够用所致。例如 SGA  CPU  sql解析  ,它是一种保护资源的锁。

2.来源于数据库设计,我指的是内部原理机制,是一种独占资源的机制,我一旦抢到资源后马上从里面闩住,用完之后再出来。这种系统资源是一直存在的,不管我们用不用它都是存在着的,有了latch机制我们可以更有效的管理和使用这些系统资源。

3.Latch是一种轻量级的锁,为什么说它也是锁呢,因为它也有锁的一些特性。例如独占资源 一致性等。Latch不会造成锁一样的阻塞,只会导致等待,这是2个完全不同的概念,阻塞是系统设计上的问题,等待是系统资源争用的问题,这对我们判断系统性能有很大的帮助。

4.latch也可以说是一种内存技术,用于保护数据库内存结构,是系统层面的事情,跟业务无关,例如

share_pool 里面latch争用,大多数是由没有绑定变量,低效sql,不规范sql引起的。解决方法:减少sql硬解析,优化sql语句,规范编码规则。

data_buffer_cache 里面latch争用,是由大量会话同一时间访问同一个数据块引起的。我们也称作热块现象。解决方法:把记录打散到多个数据块中,减少多个会话同一时间频繁访问一个数据块概率,防止由于记录都集中在一个数据块里产生热块现象。

5.OLTP系统中由于有大并发的产生,latch争用现象非常多。

OLAP系统中由于很少有表频繁修改,执行的sql语句又不多,因此latch也不多。



 本文转自 leonarding151CTO博客,原文链接:http://blog.51cto.com/leonarding/1081170,如需转载请自行联系原作者
相关文章
|
2天前
|
Oracle 安全 关系型数据库
|
2天前
|
存储 Oracle 关系型数据库
|
1天前
|
SQL Oracle 关系型数据库
关系型数据库Oracle设置 RMAN 环境:
【7月更文挑战第25天】
6 2
|
2天前
|
存储 Oracle 关系型数据库
关系型数据库Oracle运行RMAN脚本
【7月更文挑战第23天】
10 4
|
2天前
|
监控 Oracle 算法
|
2天前
|
Oracle 关系型数据库 数据库
关系型数据库Oracle编写RMAN脚本
【7月更文挑战第23天】
10 2
|
20天前
|
存储 关系型数据库 MySQL
探索MySQL:关系型数据库的基石
MySQL,作为全球最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于各种Web应用、企业级应用和数据仓库中
|
18天前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
18天前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
993 7
Mysql 数据库主从复制
|
8天前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。

推荐镜像

更多