楼主: rxh

[性能调整] 访问量增加1倍,出现大量CACHE BUFFER CHAINS LATCHES

[复制链接]
论坛徽章:
42
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:022011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:08ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:232012新春纪念徽章
日期:2012-02-13 15:09:23
11#
发表于 2005-3-3 11:32 | 只看该作者
你的LATCH是CACHE BUFFER CHAINS LATCHES,所以现在和SQL解释没有多大关系.

还是LOGICAL READ太多了,先搞定这个吧。

使用道具 举报

回复
论坛徽章:
18
ITPUB元老
日期:2005-02-28 12:57:002010年世界杯参赛球队:南非
日期:2010-04-19 12:17:452010新春纪念徽章
日期:2010-03-01 11:05:01生肖徽章2007版:牛
日期:2009-11-02 17:04:55祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2008-09-22 19:33:40奥运会纪念徽章:蹦床
日期:2008-09-09 11:00:24奥运会纪念徽章:跳水
日期:2008-06-16 06:59:25ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44数据库板块每日发贴之星
日期:2007-10-08 01:03:42
12#
发表于 2005-3-3 11:52 | 只看该作者
减少结果集是最根本解决问题的办法 这样可以大大减少CPU的压力 其实只要找到几条关键语句就可以起很明显的效果的
把session_cached_cursors设置成0对于繁忙的系统是一件恐怖的事情 呵呵

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
13#
发表于 2005-3-3 12:04 | 只看该作者
CPU      Elapsd
  Buffer Gets    Executions  Gets per Exec  %Total Time (s)  Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
     30,974,145          438       70,717.2   28.2   316.44    680.44  132190350
Module: JDBC Thin Client
select /*+rule*/ c.id, c.EDISPLAYNAME, c.CDISPLAYNAME, c.WEBURL,
c.LASTUPDATE, c.PROVINCE FROM COMPANY c where c.id in (  select
v.companyid  from vacancy v,vaccity vcity  where v.id=vcity.vac
ancyid and v.issuestatus=3   and SUBSTR(vcity.citycode,1,2)=SUBS
TR(:1,1,2)) order by c.lastupdate desc

使用了rule模式?
v.issuestatus上是否有索引,索引的选择性高不高?
能否把select /*+rule*/ c.id, c.EDISPLAYNAME, c.CDISPLAYNAME, c.WEBURL,
c.LASTUPDATE, c.PROVINCE FROM COMPANY c where c.id in (  select
v.companyid  from vacancy v,vaccity vcity  where v.id=vcity.vac
ancyid and v.issuestatus=3   and SUBSTR(vcity.citycode,1,2)=SUBS
TR(:1,1,2)) order by c.lastupdate desc
的执行计划贴出来看看?
如biti所说的:
关键在于找出热点的块到底是什么
才能针对性的解决问题
联合 v$latch / v$latch_children /x$bh / dba_objects 找出是哪些对象的热点块
再看是索引还是表
针对性的解决问题

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
14#
 楼主| 发表于 2005-3-3 12:54 | 只看该作者
最初由 eygle 发布
[B]

如wing hong所说,高逻辑读是你的主要问题之一。
部分SQL需要调整。

Latch free是另外一个需要关注的问题,高logical read也是导致Latch free的部分原因。

如果你的内存足够,可以考虑设置session_cached_cursors为非0值,对于SQL反复执行的应用,可以减少对于shared pool的Latch争用。 [/B]



我现在已经跟开发说了让他们改应用,但要一段时间,这期间有什么方法,暂时解决一下,可以是不治本的方法。
session_cached_cursors本来就设了50。

[PHP]
                                                CPU per    Elap per
Executions   Rows Processed   Rows per Exec    Exec (s)   Exec (s)  Hash Value
------------ --------------- ---------------- ----------- ---------- ----------
     316,179         316,153              1.0       0.00        0.00 3876449241
Module: JDBC Thin Client
SELECT 1 FROM DUAL


                           % Total
Parse Calls  Executions   Parses  Hash Value
------------ ------------ -------- ----------
     316,179      316,179    73.74 3876449241
Module: JDBC Thin Client
SELECT 1 FROM DUAL

  .                                   
[/PHP]

这个会有影响吗?占了解析总量的73%

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
15#
 楼主| 发表于 2005-3-3 13:16 | 只看该作者
最初由 husthxd 发布
[B]CPU      Elapsd
  Buffer Gets    Executions  Gets per Exec  %Total Time (s)  Time (s) Hash Value
--------------- ------------ -------------- ------ -------- --------- ----------
     30,974,145          438       70,717.2   28.2   316.44    680.44  132190350
Module: JDBC Thin Client
select /*+rule*/ c.id, c.EDISPLAYNAME, c.CDISPLAYNAME, c.WEBURL,
c.LASTUPDATE, c.PROVINCE FROM COMPANY c where c.id in (  select
v.companyid  from vacancy v,vaccity vcity  where v.id=vcity.vac
ancyid and v.issuestatus=3   and SUBSTR(vcity.citycode,1,2)=SUBS
TR(:1,1,2)) order by c.lastupdate desc

使用了rule模式?
v.issuestatus上是否有索引,索引的选择性高不高?
能否把select /*+rule*/ c.id, c.EDISPLAYNAME, c.CDISPLAYNAME, c.WEBURL,
c.LASTUPDATE, c.PROVINCE FROM COMPANY c where c.id in (  select
v.companyid  from vacancy v,vaccity vcity  where v.id=vcity.vac
ancyid and v.issuestatus=3   and SUBSTR(vcity.citycode,1,2)=SUBS
TR(:1,1,2)) order by c.lastupdate desc
的执行计划贴出来看看?
如biti所说的:
关键在于找出热点的块到底是什么
才能针对性的解决问题
联合 v$latch / v$latch_children /x$bh / dba_objects 找出是哪些对象的热点块
再看是索引还是表
针对性的解决问题
[/B]


这就是表结构的问题,其实只要在vaccity增加一个冗余字段issuestatus就完全解决了,但现在动不了结构。现在我打算整合一个中间表,将检索用的字段整合到这张表中,所有记录一共就几百万条,有效的其实就几万条,将这部分单摘出来就算全表查询放到keep buffer cache中性能也会比现在好太多了。但有时会一次读出几千条数据,这个是不可避免的,这个问题怎么,有点类似BBS分页的情况。

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
66
ITPUB元老
日期:2005-07-16 18:49:11授权会员
日期:2005-10-30 17:05:33ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44现任管理团队成员
日期:2011-05-07 01:45:08版主3段
日期:2012-05-15 15:24:11
16#
发表于 2005-3-3 13:29 | 只看该作者
最初由 rxh 发布
[B]

这就是表结构的问题,其实只要在vaccity增加一个冗余字段issuestatus就完全解决了,但现在动不了结构。现在我打算整合一个中间表,将检索用的字段整合到这张表中,所有记录一共就几百万条,有效的其实就几万条,将这部分单摘出来就算全表查询放到keep buffer cache中性能也会比现在好太多了。但有时会一次读出几千条数据,这个是不可避免的,这个问题怎么,有点类似BBS分页的情况。 [/B]


这个SQL还有优化的余地,你把它的执行计划贴出来让大家看看,
而且你的硬件配置不错,而且事务也很少,所以不要老想着去改
表结构什么的,先试试优化SQL先。

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2005-3-3 13:43 | 只看该作者
几个建议:
第一步:如biti所说,找出hot buffer.看看是哪些BLOCK

第二步:看看TOPSQL的sqlplan吧
script

[php]
select  distinct
id,parent_id,OPERATION,OPTIONS,OBJECT_NAME,object_owner
from v$sql_plan
where HASH_VALUE = &hash
order by id

....
[/php]

第3步:据metalink减,HIGH buffer cache chain很多时候是由不合理的NL loop引起大量index扫描造成的,如果第1/2步的结果印证了这一点,考虑加大 db_file_multiblock_read_count,使本来走index改走FTS,说不定有帮助

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
18#
 楼主| 发表于 2005-3-3 13:50 | 只看该作者
最初由 xzh2000 发布
[B]

这个SQL还有优化的余地,你把它的执行计划贴出来让大家看看,
而且你的硬件配置不错,而且事务也很少,所以不要老想着去改
表结构什么的,先试试优化SQL先。

[/B]



[PHP]

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=HINT: RULE
   1    0   SORT (ORDER BY)
   2    1     NESTED LOOPS
   3    2       VIEW OF 'VW_NSO_1'
   4    3         SORT (UNIQUE)
   5    4           TABLE ACCESS (BY INDEX ROWID) OF 'VACCITY'
   6    5             NESTED LOOPS
   7    6               TABLE ACCESS (BY INDEX ROWID) OF 'VACANCY'
   8    7                 INDEX (RANGE SCAN) OF 'INDX_VACANCY_ISSUESTA
          TUS' (NON-UNIQUE)

   9    6               INDEX (RANGE SCAN) OF 'INDEX_VACCITY_VACID' (N
          ON-UNIQUE)

  10    2       TABLE ACCESS (BY INDEX ROWID) OF 'COMPANY'
  11   10         INDEX (UNIQUE SCAN) OF 'PK_COMPANY' (UNIQUE)




Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      81581  consistent gets
          0  physical reads
          0  redo size
     111804  bytes sent via SQL*Net to client
        943  bytes received via SQL*Net from client
        196  SQL*Net roundtrips to/from client
          2  sorts (memory)
          0  sorts (disk)
       1441  rows processed

.
[/PHP]

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
19#
发表于 2005-3-3 14:20 | 只看该作者
v.issuestatus上是否有索引
->看执行计划,答案是有
索引的选择性高不高?
->条件是=3,感觉这个字段的选择性不高把?

分析表,用cost模式看看?

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
20#
 楼主| 发表于 2005-3-3 15:01 | 只看该作者
最初由 husthxd 发布
[B]v.issuestatus上是否有索引
->看执行计划,答案是有
索引的选择性高不高?
->条件是=3,感觉这个字段的选择性不高把?

分析表,用cost模式看看? [/B]


总数据有几百万条,等于3的就不超过4万条。其实这个字段再加在vaccity上性能就会快很多!

用CBO的话会全表扫描。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表