ITPub博客

首页 > 数据库 > Oracle > Latch free等待事件(三)

Latch free等待事件(三)

原创 Oracle 作者:m77m78 时间:2007-05-29 15:31:35 0 删除 编辑

Oracle 10g 操作系统solaris

Db_cache_size

32m

64m

128m

256m

512m

1024m

2048m

_ksmg_granule_size

4m

4m

4m

4m

4m

16m

16m

_db_block_buffers

3976

7952

15904

31808

63616

127232

254464

_db_block_hash_buckets

8192

16384

32768

65536

131072

262144

524288

_db_block_hash_latches

1024

1024

1024

1024

1024

1024

2048

Oracle9i 操作系统solaris

[@more@]

Oracle 10g 操作系统solaris

Db_cache_size

32m

64m

128m

256m

512m

1024m

2048m

_ksmg_granule_size

4m

4m

4m

4m

4m

16m

16m

_db_block_buffers

3976

7952

15904

31808

63616

127232

254464

_db_block_hash_buckets

8192

16384

32768

65536

131072

262144

524288

_db_block_hash_latches

1024

1024

1024

1024

1024

1024

2048

Oracle9i 操作系统solaris

Db_cache_size

32m

64m

128m

256m

512m 

1024m

2048m

_ksmg_granule_size

4m

4m

16m

16m

16m

16m

16m

_db_block_buffers

4000

8000

16016

32032

64064

128128

256256

_db_block_hash_buckets

8009

16001

32051

64067

128147

256279

512521

_db_block_hash_latches

1024

1024

1024

1024

1024

1024

2048

Oracle8i 操作系统solaris

Db_block_buffers

4000

8000

16016

32032

64064

128128

192192

_db_block_hash_buckets

8000

16000

32032

64064

128128

256256

384384

_db_block_hash_latches

1024

1024

1024

1024

1024

1024

2048

Cache buffers chains latch争用原因一 ―― 低效的sql语句

低效的sql语句是导致cache buffers chains latch争用的主要原因。在高并发系统中, atch free时间可能因此非常明显。典型的情况是,应用程序开启多个并发会话执行相同的低效sql,并且访问同样的数据集。

你应该时刻铭记下面三点:

n 每次逻辑读都需要请求一次latch。

n 只有获得某个latch之后才会停止对该latch的不断请求。

n 在某个时刻,只有一个进程可以获得cache buffers chains latch,而该latch可能用于保护很多的数据块,其中的某些块可能正在被其他进程请求(当然,前面也已经提过,oracle9i允许只读性质的cache buffers chains latch共享)。

一般而言,较少的逻辑读意味着较少的latch请求,也就意味着较少的latch争用和更好的系统性能。所以,你应该找出导致cache buffers chains latch争用的低效sql语句,优化这些语句,尽量降低其逻辑读。那些buffers_get/executions比值较大的sql可能就是你需要调整的语句。

注1:某些dba可能通过修改隐含参数_db_blocks_hash_latches来增加系统中cache buffers chains latch的个数,而不是首先去优化低效的sql语句,这是不正确的,增加latch能暂时降低对latch的争用,但这是治标不治本的方法。

注2:在sun solareis平台上,我们将一个数据库从oracle8.1.7.4升级到oracle9.2.05之后,发现了大量的cache buffers chains latch争用,新的优化器为应用程序生成了低效的执行计划。一些隐藏的优化器相关的参数,在oracle8i中是无效的,但在oracle9i中有效。在重设这些参数后,问题得意解决。如果你遭遇到同样的情况,建议请求oracle的技术支持。

Cache buffers chains latch争用原因二 ―― 热点块

热点块是导致cache buffers chains latch争用的另外一个主要原因。当多个进程重复访问一个或多个由同一个cache buffers chains latch保护的块时会导致该问题。这通常是应用程序引起的。在这种情况下,增加cache buffers chains latch的个数对热点块导致的争用没有什么作用。因为数据块分布在哪个hash bucket和hash chain上是由块地址(dba:data block address)和hash bucket的个数决定的,和hash latch的个数没有关系。只要块地址和ha

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/34329/viewspace-916688/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-04-25

  • 博文量
    168
  • 访问量
    764686