iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >SQL中出现latch:cache buffers chains报错怎么解决
  • 892
分享到

SQL中出现latch:cache buffers chains报错怎么解决

2024-04-02 19:04:59 892人浏览 安东尼
摘要

这篇文章主要介绍了sql中出现latch:cache buffers chains报错怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL中出现latch:cache

这篇文章主要介绍了sql中出现latch:cache buffers chains报错怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL中出现latch:cache buffers chains报错怎么解决文章都会有所收获,下面我们一起来看看吧。

1.产生原理

当一个数据块读入到sga中时,该块的块头(buffer header)会放置在一个hash bucket的链表(hash chain)中。该内存结构由一系列cache buffers chains子latch保护(又名hash latch或者cbc latch)。对Buffer cache中的块,要select或者update、insert,delete等,都得先获得cache buffers chains子latch,以保证对chain的排他访问。若在过程中发生争用,就会等待latch:cache buffers chains事件。

2.产生原因:

(1). 低效率的SQL语句(主要体现在逻辑读过高) 在某些环境中,应用程序打开执行相同的低效率SQL语句的多个并发会话,这些SQL语句都设法得到相同的数据集,每次执行都带有高 BUFFER_GETS(逻辑读取)的SQL语句是主要的原因。相反,较小的逻辑读意味着较少的latch get操作,从而减少存器争用并改善性能。注意v$sql中BUFFER_GETS/EXECUTioNS大的语句。

(2).Hot block 当多个会话重复访问一个或多个由同一个子cache buffers chains锁存器保护的块时,热块就会产生。当多个会话争用cache buffers chains子锁存器时,就会出现这个等待事件。有时就算调优了SQL,但多个会话同时执行此SQL,那怕只是扫描特定少数块,也是也会出现HOT BLOCK的。

3.解决方法

(1).优化SQL,如优化nested loop join,如果有可能使用hash join代替nested loop join。

(2).可以利用对热块索引进行hash分区,或者使用hash簇的方式减缓热块现象。

(3).调整表的pctfree值,将数据尽可能的分布到多个块中,但相同的查询要扫更多块,有负面作用。

(4).并行查询是直接读数据文件,不经过SGA,即direct path read,所以就不存在锁存器争用的情况了。但其一般是为了大量数据读取而使用的,不作为一般的解决方案。

(5).等问题自己消失。有时当出现latch争用时,故障时刻确实没有较好的方式解决,找到病因才是关键。

4.查找热点快对象

是从当前等待latch:cache buffers chains事件的会话出发。通过v$session_wait视图,获得P1RAW即子锁存器的地址。通过重复观察v$session_wait视图,发现某个子锁存器地址较多地出现,那么该子锁存器管辖的chain可能有热块。

select p1,p1raw from v$session_wait where event='latch: cache buffers chains';

所以v$session的p1raw与x$bh的laddr,以及v$latch_children的addr是同样的东西,都是子锁存器的地址。大概思路是,通过子锁存器的热度来找到所管辖的对象,以及对象的热度。

通过子锁存器地址,即v$latch_children的addr字段,来获取这些子锁存器所管理的对象的文件号块号与热度。 注意到x$bh字典表中的tch字段表示的就是block的touch count,一般来说这个值越高那么这个块就越热,我们称这样的块就叫做热点块。

  1. SELECT hladdr,

  2.          obj,

  3.          (SELECT object_name

  4.             FROM dba_objects

  5.            WHERE (data_object_id IS NULL AND object_id = x.obj)

  6.                  OR data_object_id = x.obj AND ROWNUM = 1)

  7.             AS object_name,

  8.          dbarfil,

  9.          dbablk,

  10.          tch

  11.     FROM x$bh x

  12.    WHERE hladdr IN ('00000000DA253C08', '00000000DA380310')

  13. ORDER BY tch DESC;


根据FILE#,dbablk来找出对应对象。 

  1. select * from dba_extents where file_id=10 and 36643122 between block_id and block_id + blocks - 1;

  1. select * from dba_extents where file_id=10 and 36643122 between block_id and block_id + blocks - 1;

关于“SQL中出现latch:cache buffers chains报错怎么解决”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“SQL中出现latch:cache buffers chains报错怎么解决”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: SQL中出现latch:cache buffers chains报错怎么解决

本文链接: https://www.lsjlt.com/news/71297.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SQL中出现latch:cache buffers chains报错怎么解决
    这篇文章主要介绍了SQL中出现latch:cache buffers chains报错怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SQL中出现latch:cache ...
    99+
    2024-04-02
  • SQL出现5120错误怎么解决
    SQL Server 错误 5120 是由于没有足够的权限来访问或操作指定的数据库或文件引起的。以下是解决此问题的几种方法:1. 检...
    99+
    2023-09-22
    SQL
  • SQL语句出现ora06502错误怎么解决
    ORA-06502错误通常是由于数据类型不匹配引起的,可能有以下几种原因和解决方法:1. 传递的参数与目标变量的数据类型不匹配。请确...
    99+
    2023-10-18
    SQL
  • 解决mybatis批量更新出现SQL报错问题
    一、问题重现 1.配置文件 spring: #DataSource数据源 datasource: url: jdbc:mysql://127.0.0.1:3306/m...
    99+
    2024-04-02
  • sql注入报错怎么解决
    今天小编给大家分享一下sql注入报错怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。0x01我们先来看一看现...
    99+
    2023-07-02
  • python运行出现traceback报错怎么解决
    当Python运行出现Traceback错误时,可以按照以下步骤来解决问题:1. 阅读Traceback错误信息,了解错误的类型和发...
    99+
    2023-10-19
    python
  • 怎么解决SQL中报错ORA-16038问题
    这篇文章主要讲解了“怎么解决SQL中报错ORA-16038问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决SQL中报错ORA-16038问题”吧!...
    99+
    2024-04-02
  • sql中varchar转number时报错怎么解决
    在将varchar类型转换为number类型时,可能会出现错误的情况,例如varchar中包含非数字字符、包含空格、小数点等特殊字符...
    99+
    2024-05-13
    sql
  • php中出现 fopen 报错如何解决
    php中出现 fopen 报错如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php fopen函数返回false怎么办?使用yum安装的apache2....
    99+
    2023-06-15
  • php中出现 artisan 报错如何解决
    php中出现 artisan 报错如何解决?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。php artisan 命令报错,无论输入什么命令有以下几种情况:你的服...
    99+
    2023-06-15
  • sql isnull函数报错怎么解决
    在SQL中,ISNULL函数用于判断一个表达式是否为NULL,并在其为NULL时返回指定的值。如果ISNULL函数报错,可能是因为以...
    99+
    2024-04-09
    sql
  • oracle出现SVR4 Error报错问题怎么解决
    这篇文章主要讲解了“oracle出现SVR4 Error报错问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle出现SVR4 Error报...
    99+
    2024-04-02
  • 如何解决mybatis批量更新出现SQL报错问题
    这篇文章主要介绍如何解决mybatis批量更新出现SQL报错问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、问题重现1.配置文件spring:  #DataSource数据源 &n...
    99+
    2023-06-29
  • Springboot中@ConfigurationProperties注解出现报错如何解决
    今天就跟大家聊聊有关Springboot中@ConfigurationProperties注解出现报错如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。注解报错:1.我们需要把j...
    99+
    2023-06-05
  • 解决KeyboardInterrupt()在flask出现报错
    报错的原因KeyboardInterrupt 是 Python 的一个常见异常,当用户在终端中按下 ctrl+c 组合键时就会触发。在 Flask 应用程序中,如果您在运行应用程序时按下 ctrl+c,就会导致应用程序抛出 Keyboard...
    99+
    2024-02-28
    python 错误处理 flask报错 flask KeyboardInterrupt
  • 解决TypeError()在flask出现报错
    报错的原因TypeError是 Python 语言的一种常见错误,它表示在运行时发生类型错误。在 Flask 中,这个错误可能由以下原因之一导致: 数据类型不匹配: 如果你在调用函数或方法时使用了错误的数据类型, 可能会导致 TypeErr...
    99+
    2024-02-28
    python 错误处理 TypeError flask报错 flask
  • php substr超出报错怎么解决
    PHP是一种用于Web开发中的脚本语言,具有非常广泛的应用范围。在PHP语言中,substr函数是一个常用的字符串操作函数,它用于从一个字符串中截取指定的部分。然而,在使用substr函数时,有时会遇到“substr超出报错”的问题。本文将...
    99+
    2023-05-14
    php
  • mysql端删表卡住出现报错怎么解决
    本篇内容介绍了“mysql端删表卡住出现报错怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!【问题描...
    99+
    2024-04-02
  • oracle报sql statement ignored错误怎么解决
    当出现"SQL statement ignored"错误时,通常是由于SQL语句中有语法错误或者逻辑错误导致Or...
    99+
    2024-04-09
    oracle
  • jdbc连接sql时间太长出现错误怎么解决
    当JDBC连接SQL服务器的时间过长或出现错误时,可以尝试以下解决方法: 检查网络连接:确保服务器和客户端之间的网络连接稳定,并...
    99+
    2023-10-24
    jdbc sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作