read by other session问题

read by other session请问各位都有什么看法和解决的方法

0

2个回答

[code="sql"]ODS系统比较慢,要求诊断一下,给ODS系统做了AWR。首先交代一下ODS环境:

  (1)环境:RedHat 5.1+Oracle10.2.0.4 RAC(两节点)

  (2)现象:系统异常慢

  由于当时质疑人资管控系统数据库有问题,而人资管控系统是在节点2实例上,所以查看节点2实例的top5等待事件:

  节点2:

Top 5 Timed Events Avg %Total
~~~~~~~~~~~~~~~~~~ wait Call
~~~~~~~~~~~~~~~~~~ wait Call
Event Waits Time (s) (ms) Time Wait Class
Event Waits Time (s) (ms) Time Wait Class



gc buffer busy 2,346,848 24,567 10 33.2 Cluster
gc buffer busy 2,346,848 24,567 10 33.2 Cluster
read by other session 1,941,773 18,734 10 25.3 User I/O
read by other session 1,941,773 18,734 10 25.3 User I/O
db file scattered read 673,646 10,209 15 13.8 User I/O
db file scattered read 673,646 10,209 15 13.8 User I/O
CPU time 6,627 9.0
CPU time 6,627 9.0
log file sync 129,112 4,068 32 5.5 Commit
log file sync 129,112 4,068 32 5.5 Commit

  从top 5 event来看,主要是read类型的event比较多

  db file sequential read 顺序读导致

  gc buffer busy 产生的根本原因是Oracle 的cache fusion机制,简单来说cache fusion的主要目的

  1、减少各个节点对数据库的读写,提交效率,内存之间的数据同步要比磁盘到内存快很多

  2、保持数据的完整性,当某个节点执行查询时首先在本节点buffer中是否存在,如果不存在就会到另外节点buffer去查找,

  如果存在大量的cache交换就会产生gc buffer busy

  3、read by other session

  When information is requested from the database, Oracle will first read the data from disk into the database buffer cache.

  If two or more sessions request the same information, the first session will read the data into the buffer cache while other sessions wait.

  In previous versions, this wait was classified under the "buffer busy waits" event.

  However, in Oracle 10.1 and higher, this wait time is now broken out into the "read by other session" wait event.

  Excessive waits for this event are typically due to several processes repeatedly reading the same blocks,

  e.g. many sessions scanning the same index or performing full table scans on the same table.

  Tuning this issue is a matter of finding and eliminating this contention.

  该event是10.1以后新引入的,之前归类于buffer busy waits,Oracle对event的划分越来越细,

  产生原因:对同一个索引进行的大量扫描或对同一个表进行全表扫描

  查询等待的文件

  SELECT p1 "file#", p2 "block#", p3 "class#"
  FROM v$session_wait
  WHERE event = 'read by other session';

  查询热点块对应的对象

  SQL> SELECT relative_fno, owner, segment_name, segment_type
  FROM dba_extents
  WHERE file_id = &file
  AND &block BETWEEN block_id AND block_id + blocks - 1

  查看Top Sql 发现如下比较可疑,单次执行要花费20多分钟,

  查看表的索引无异常,查看执行计划是index range scan,貌似没有问题

  该表的数据量比较大且变化比较频繁,怀疑是由于索引引起的热点块,于是将其改为

  全表扫描,这样可以避免索引的热点块产生

  经过一段时间观察系统正常

  SQL ordered by Elapsed Time DB/Inst: BILLBJ/billbj1 Snaps: 15955-15956
  -> Resources reported for PL/SQL code includes the resources used by all SQL
  statements called by the code.
  -> % Total DB Time is the Elapsed Time of the SQL statement divided
  into the Total Database Time multiplied by 100
  Elapsed CPU Elap per % Total
  Time (s) Time (s) Executions Exec (s) DB Time SQL Id
  ---------- ---------- ------------ ---------- ------- -------------
  10,435 709 8 1304.3 66.8 5uc64k11j23wx
  Module: JDBC Thin Client
  select a.day day,sum(a.data) data,sum(a.indata) indata from bandwidth_d
  ailytable a where a.day between :v_start_date and :v_end_date and a.channelId
  in (select * from the (select cast(:v_channelId as channelIdArray) from dual))
  and a.nodeId in (select * from the (select cast(:v_nodeId as nodeIdArray) from d

  有时候产生同一个问题的几个原因可能是相悖的,比如read by other session,所以我们不能局限于某一个方面,此案例中db file sequential read wait也说明顺序读等待过多,最后的解决方法也说明查询未必适用索引就好。

  其实read by other session等待事件是要解决热点块问题,而解决热点块问题首先要减低IO次数,我们来看看IO情况:

~~~~~~~~~~~~ Per Second Per Transaction
~~~~~~~~~~~~ Per Second Per Transaction
--------------- ---------------
--------------- ---------------
Redo size: 28,546.06 881.39
Redo size: 28,546.06 881.39
Logical reads: 37,292.67 1,151.45
Logical reads: 37,292.67 1,151.45
Block changes: 151.32 4.67
Block changes: 151.32 4.67
Physical reads: 2,872.88 88.70
Physical reads: 2,872.88 88.70
Physical writes: 2.64 0.08
Physical writes: 2.64 0.08
User calls: 114.65 3.54
User calls: 114.65 3.54
Parses: 60.26 1.86
Parses: 60.26 1.86
Hard parses: 28.64 0.88
Hard parses: 28.64 0.88
Sorts: 15.86 0.49
Sorts: 15.86 0.49
Logons: 0.42 0.01
Logons: 0.42 0.01
Executes: 106.84 3.30
Executes: 106.84 3.30
Transactions: 32.39
Transactions: 32.39

  很明显逻辑读比较多,另外等待事件cr request retry也是造成性能差的一个原因。我们可以通过分割应用,对大表分区等方法进行系统优化。[/code]

0

找到这条SQL语句,然后对他进行优化

这个问题一般就是系统的设计问题,或者是SQL的问题

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android-常见问题解决方案
Toast 也是可以自定义通过Window 添加进去,系统的实现方式为大致为 加载系统的布局文件 一个textview,通过window add进去 ,所有我们可以自定义各种Toast样式,这个使用有两种做法 1。自己写一个view 通过添加到window中,在小米手机上有问题,具体表现为因为让view添加到程序最上层,需要添加一个权限 android.permission.SYSTEM_ALER
gdb调试之--read by other session 等待事件的重现
gdb调试之--read by other session 等待事件的重现
mongo-三节点集群安装
总体架构 测试库架构 3节点,三重分片,2个副本,每个节点一个仲裁架构 节点1                              节点2                                        节点3 1(主)                           2(主)                                      仲 2(
“read by other session”等待事件引发的数据库性能问题
今天上午接到某客户电话,说他们的生产库从8:00开始,监控就报CPU资源使用率非常高,最高可达99%,虽然业务还没有挂,但是数据库非常慢,性能出现问题。客户的库是10g单实例,我远程给客户做了AWR报告,下面来具体分析: 首先,DB Time非常高,是平时正常情况的好几倍时间,从这一点上就能判断确实存在一定的性能问题
PostgreSQL 关闭session链接,删除数据库方法
PostgreSQL 关闭session链接,删除数据库方法          PostgreSQL 中 有时候想删除数据库(drop database swiftliveqaapi;),发现提示“ERROR:  database "xxxxxx" is being accessed by other users DETAIL:  There are 30 other sessions us
关于read by other session跟cr request retry的问题
今天有个同事说有张表通过索引可以查出指定的数据,如果走全表扫描等上非常久也跑不出数据,加rownum<3这样的也出不来,我去看了后台的$session_wait,event事件是read by other session,看到这种情况后,我去另外一台(两台RAC的)看了一下,另外一台关于这张表的等待事件是cr request retry,这个是什么问题,我无从入手,第一次碰到,请教有经验的大哥、大姐们一下。谢谢
php 使用阿里云memcache存储session问题
今天发现了一个特别奇怪的问题 问题如下: 同一台机器,同样的代码,一套可以访问并存入某一数组到session(阿里memcache),而另一套程序死活存不进去 报错信息: PHP Warning: Unknown: Failed to write session data (memcached). Please verify that the current setting of
使用redis存储session
        准备工作参考以前的博客安装redis、安装phpredis。        具体代码ini_set('session.save_handler', 'redis'); ini_set('session.save_path', 'tcp://127.0.0.1:6379'); session_start(); $_SESSION['sessionid'] = 'this is ses...
websphere&nbsp;Java虚拟机内存修…
解决方法 找到配置文件: /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/config/cells/CMMI-CONTRBTNode01Cell/nodes/CMMI-CONTRBTNode01/servers/server1下的server.xml修改-Xmo 的值等于 -Xms,启动websphere,问题解决 错误现象: ADMU01
oracle列过大解决方案
解决方案: 修改oracle 10g的字符集 Oracle 修改数据库字符集为:ZHS16GBK 查看服务器端字符集SQL > select * from V$NLS_PARAMETERS 修改:$sqlplus /nolog SQL>conn / as sysdba 若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器, 然后执行
MySQL SET TRANSACTION 设置事务隔离级别
1.  首先说一下autocommit
解决Logical Reads高的方法和实验
之前介绍了CBC,就是cache buffer chains这个等待事件的影响,《缓解latch: cache buffers chains的案例》,解决逻辑读过高的SQL语句,是优化方向。为了更直观地说明这个问题,通过模拟实验,来了解下。创建测试表,test表三个字段,分别是id1,id2和name,insert入100万行记录,其中id1每个distinct值100次,id2针对每个id1的d
Session保存到Memcache中,解决读取数据慢问题
session 存取数据默认是在文件中。但是文件毕竟在磁盘中,读取了还是慢。把session中的数据放到了memcache中,读取速度肯定提高很多。而且在多个服务器需要共用  session  时会比较方便,将 这些服务器都配置成使用同一组  memcached 服务器就可以,减少了额外的工作量。 在 php.ini 中全局设置(* 需要重启服务器) session.save_handle
Mycat 分布式事务的实现
Mycat已经成为了一个强大的开源分布式数据库中间件产品。面对企业应用的海量数据事务处理,是目前最好的开源解决方案。但是如果想让多台机器中的数据保存一致,比较常规的解决方法是引入“协调者”来统一调度所有节点的执行。本文选自《分布式数据库架构及企业实践——基于Mycat中间件》。
pppoe调试信息
--------------------------------------------- * The following section contains information about your system Thu Jan  1 00:02:21 UTC 1970 Output of uname -a Linux (none) 2.6.31--LSDK-9.2.0_U10.102
cc2430/cc2530驱动安装不正确
a target cannot be selected when used in another debug session or in other applications
Android视频推流直播学习【一】
去年公司要在Android盒子上加摄像头,然后打算给盒子添加一个安防监控的功能。搞了几个月,目前视频和音频都有,不过效果不太好。首先是延迟比较大,再者音频没有做降噪处理,电流杂音比较大,画面也不太稳定,马赛克现象有点严重。所以写这个也只是记录一下心得体会。 因为我本身对流媒体一窍不通,所以android客户端直接用的spydroid,本文也主要是一步步分析spydroid源码。 首先spydr
zookeeper 大量连接断开重连原因排查
  问题现象 最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考: http://blog.csdn.net/hengyunabc/article/details/19006911 但是改了之后,发现一天的日志量就是100多M,滚动日志一天就被冲掉了,这个不科学。 再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开: ...
在windows下使用xampp时遇到无法读取session的问题
session写入后,在xampp/tmp下可以正常生成cookie文件,但读取不到。 这时候可以把php.ini里: session.save_path = "\xampp\tmp"注释掉,取系统目录为session保存目录。
Python爬虫问题汇总(持续更新)
@分布式爬虫的slave端找不到scrapy_redis: 运行slave端时使用:sudo scrapy crawl spidername,或sudo scrapy runspider mycrawler_redis.py,总之sudo一下; 没sudo居然报找不到模块…没道理,蛋疼啊; @分布式爬虫尝试连接远程redis被拒: 报错:redis.exceptions.Respons
Oracle 数据库禁止全表访问的时候direct path read
一般在OLAP环境中,大表在进行全表扫描的时候一般会出现direct path read等待事件,如果在OLTP环境中,出现大量的direct path read直接路径读取,这样就有问题了。一般在OLTP中,都是事物型的sql,如果想sql执行效率,那么最好从内存当中读取数据,直接从数据文件中读取,后果可想而知了。这里就可能需要我们禁用direct path read。 第一种方法:使用1
实验讲解DB_FILE_MULTIBLOCK_READ_COUNT对物理读和IO次数的影响
实验讲解DB_FILE_MULTIBLOCK_READ_COUNT对物理读和IO次数的影响
postgresql新建库2个常见报错
[size=small]今天使用pg建库发现两个报错: ERROR: new collation (zh_CN.UTF-8) is incompatible with the collation of the template database (en_US.UTF-8) ERROR: source database &quot;template1&quot; is being accessed by ...
redis管理session,解决用nginx做负载均衡时sesion不能共享问题
1、在php.ini中改下面两句: session.save_handler = redis  session.save_path = "tcp://192.168.159.3:6379" 如果redis服务器有密码 session.save_path = "tcp://192.168.159.3:6379" 改为:session.save_path = "tcp://192.168.1
RC、DC、PrimeTime等综合时序工具保存session的办法
rc保存session pt保存session dc保存sessionrc保存sessionwrite_design -base xxx_session source ./xxx_session.rc_setup.tclpt保存sessionsave_session pt_session restore_session pt_sessiondc保存sessionwrite -hierarchy -f
vue2 前后端分离项目ajax跨域session问题解决
最近学习使用vuejs前后端分离,重构一个已有的后台管理系统,遇到了下面这个问题: 实现跨域请求时,每次ajax请求都是新的session,导致无法获取登录信息,所有的请求都被判定为未登陆。 1、 vuejs ajax跨域请求 最开始使用的是vue-resource,结果发现vue2推荐的是axios,于是改成axios;安装axios npm install axios -S
spark初探,官方文档
从spark官方文档开始理解spark
eclipse安装插件报错
An error occurred while collecting items to be installed session context was:(profile=D__Program Files_eclipse_testing-mars_eclipse, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operan...
11g中_serial_direct_read是动态参数,可以在线修改
11g中_serial_direct_read是动态参数,可以在线修改
SDP RFC4566
This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation.
什么是SKEY,怎样获取SKEY,SKEY的…
您认为您的密码安全吗?即使您的密码很长,有很多特殊字符,解密工具很难破解,但您的密码在网络中传送时是以明文形式的,在以太网中随便一个嗅探器就可以截取您的密码。现在在交换环境中也能实现这种技术。在这种情况下,skey 对您来说是一个选择。 Skey 是一次性口令的一个工具。它是一个基于客户\服务器的应用程序。首先在服务器端可以用 keyinit 命令为每个用户建立一个 skey 客户,这
双机部署session共享
Redis部署解决共享session问题,解决session不同步问题
5. 事务隔离级别之Read Committed
这篇我们学习事务隔离级别Read Committed,顾名思义,就是读已提交,一个事务只能看到其他并发的已提交事务所作的修改。很显然,该级别可以解决Read Uncommitted中出现的“脏读“问题。除了Mysql,很多数据库都以Read Committed作为默认的事务隔离级别。下面通过例子来演示Read Committed解决“脏读”:1. 小明连接数据库去查询自己本学期的成绩,他设置ses...
The IP Multimedia Subsystem (IMS) - Session Control and Other Network Operations
The IP Multimedia Subsystem (IMS) - Session Control and Other Network Operations
解决Shiro频繁访问Redis读取和更新session(十二)
原文地址,转载请注明出处:&amp;amp;amp;nbsp;https://blog.csdn.net/qq_34021712/article/details/80791339&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp;©王赛超&amp;amp;amp;nbsp; 该博客是接着上一篇博客: Shiro使用redis作为缓存(解决shiro频繁访问Redis) 请将两篇博客同时打开,方便查看。
oracle中的系统权限和对象权限
权限指用户操作某对象数据或者执行某种sql语句的权力,而角色指某些权限和角色的集合体,角色的出现方便了权限管理工作。权限的划分从某种意义上可以分为两个级别: 用户访问或者处理数据的权力用户在使用某些资源的限制,例如cpu 在一般情况下,我们将权限分为三类: 系统权限:允许用户执行某些管理功能对象权限:允许用户对某对象进行操作角色:权限或者角色的集合体,方便管理 摘录部分sy
Oracle 查看 session 当前统计信息 脚本 说明
一.相关说明 当我们在一个session 上进行事务操作时,如果我们想查看这个事务的相关统计信息,那么可以通过v$mystat ,v$sysstat, v$sesstat, v$statname 字典来查看。 在Oracle 11g中,通过这2个视图,我么可以查看到588个相关的统计信息。SQL> select * from v$version; BANNER -----------------
长连接短连接长短连接争长短
摘要:其实还是这个老问题:记一次文件下载丢包填坑之旅 http://www.cnblogs.com/syjkfind/p/5281677.html即使现在只有haproxy-nginx-磁盘文件比较少的转发,但文件特别大,还是偶有文件不完整的问题。从现象上看,浏览器响应是200没问题,curl命令的日志显示是 curl:(18)transferclosedwith204800bytesremain...
WebSphere调优后出现的问题之一
linux下websphere7.0,调优后重启websphere报错: ADMU0116I: Tool information is being logged in file            /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log ADMU0128I: Starting t
eclipse安装SVN报错
eclipse安装SVN报错。地址:http://subclipse.tigris.org/update_1.8.x 错误消息: An error occurred while collecting items to be installed session context was:(profile=epp.package.jee, phase=org.eclipse.equinox.int
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 大数据专业教育的问题