笼统描述Oracle日志缓冲区

数据库 Oracle
这里介绍Oracle日志缓冲区,日志空间的请求值应接近于0,否则需增加初始化参数LOG_BUFFER的值,以增加空间、减少争用。

Oracle有很多值得学习的地方,这里我们主要介绍Oracle日志缓冲区,包括介绍建立优化索引等方面。Oracle日志缓冲区的争用将完全抑制数据库的性能,因此要设法减少它。日志空间请求反映了用户进程等待Oracle日志缓冲区空间的次数。所以可通过查问动态性能表V$SYSSTAT(需有SELECT ANY TABLE特权)来确定是否争用Oracle日志缓冲区空间。该查询语句的格式如下:

  1. SQL>SELECT name, value  
  2. 2>FROM V$SYSSTAT  
  3. 3>WHERE name='redo log space requests'; 

日志空间的请求值应接近于0,否则需增加初始化参数LOG_BUFFER的值,以增加空间、减少争用。减少Oracle日志缓冲区闩锁的争用对Oracle日志缓冲区的访问由闩锁(latches)调控。闩锁分为日志分配闩锁和日志拷贝闩锁两类。

当多个用户同时频繁地访问Oracle日志缓冲区时,就可能引起对Oracle日志缓冲区闩锁的争用,从而降低性能。Oracle将所有闩锁的活动记录在动态性能表V$LATCH中。有SELECT ANY TABLE特权的用户可以查询它,以了解是否有争用发生。查询语句如下:

  1. SQL>SELECT name,gets,misses,iddediate_gets,iddediate_miss  
  2. 2>FROM V$LATCH l,V$LATCHMANE ln  
  3. 3>WHERE ln.nome IN('redo allocation','redo copv')AND ln.latch #=1.latch #; 

其中:
◆ willing_to_wait:对闩锁的请求种类之一。
◆ iddediate:对闩锁的请求种类之二。
◆ gets:表示对闩锁的willing_to_wait请求成功的次数。
◆ misses:表示对闩锁的willing_to_wait请求不成功的次数。
◆ iddediate_gets:表示对每个闩锁立即请求成功的次数。
◆ iddediate_miss:表示对每个闩锁立即请求不成功的次数。

要减少日志分配闩锁的争用就需使单个进程持有闩锁的时间最短,要减少此时间又应减少在日志闩锁上的拷贝,即减少参数LOG_SMALL_ENTRY_MAX_SIZE的值。要减少日志拷贝闩锁的争用,一是观察其争用情况,增加闩锁,即增加LOG_SIMULTANEOUS_COPIES的值;二是减少持有闩锁的时间,即在获得日志拷贝闩锁之前,就迫使Oracle用户进程事先建立日志项。事先建立的所有日志项的大小都要小于参数 LOG_ENTRY_PREBUILD_THRESHOLD,要事先建立日志项就要增加参数LOG_ENTRY_PREBUILD_THRESSHOLD 的值。

排序是一项花销很大的操作,而且对性能的影响程度也较大,因此使大部分排序在内存中完成,而不是在磁盘上进行,这是至关重要的。其中“sorts(memory)”选项表示不需要磁盘I/O,选项“sorts(disk)” 表示需要磁盘I/O。如果用户认为在磁盘上的排序意义较大,可以增加init.ora文件SORT_AREA_SIZE参数的设置值。以上介绍Oracle日志缓冲区。

建立优化索引

当要改进查询的性能时,索引是最便捷的,常常也是最好的技术。多数新应用程序的存取速度问题是由于缺少合适的索引。使用索引可以使性能发生巨大的变化,而且确定需要什么样的索引也相对简单,只需要考察您的SQL语句,看WHERE子句中您用了什么内容。

对待索引的建立要特别谨慎,因为索引要占用磁盘空间。如果索引同表本身的大小差不多,那就不能从索引得到多少好处。索引还要对表的更新、插入和删除的性能产生影响。除了这几点之外,索引是改进查询性能的最简单、最有效的方法,尤其是当您总是对几个关键字字段进行搜索时,这种方法最合适。

索引建立要花费大量时间,可以使用ALTER INDEX REBUILD来创建新索引,这比其删除和重建索引要迅速得多。如果用户的数据已经排序,在构建索引时使用NOSORT选项,如:

  1. SQL>ALTER INDEX emp_primary_key REBUILD;  
  2. SQL>CREATE INDEX myindex ON emp(ename) NOSORT; 

【编辑推荐】

  1. 闲扯Oracle数据导入
  2. 精炼概括Oracle性能测试
  3. 简介Oracle INDEX提示
  4. 五分钟精通Oracle Hints
  5. 简单介绍Oracle驱动表
责任编辑:佚名 来源: 博客
相关推荐

2009-11-16 16:59:24

Oracle优化库高速

2009-11-16 17:26:17

Oracle优化缓冲区

2019-02-27 13:58:29

漏洞缓冲区溢出系统安全

2011-12-14 16:30:42

javanio

2017-01-09 17:03:34

2010-09-29 15:59:04

2017-07-04 17:09:10

Map环形缓冲区数据

2014-07-30 11:21:46

2018-01-26 14:52:43

2010-04-09 17:08:17

Oracle数据库

2009-09-24 18:16:40

2009-07-15 15:50:48

Jython线程

2023-10-09 23:01:09

MySQL数据库

2010-12-27 10:21:21

2011-07-20 10:54:14

C++

2010-09-08 15:43:18

2011-03-23 12:39:44

2018-11-01 08:31:05

2011-11-15 16:00:42

2022-08-09 08:31:40

C -gets函数漏洞
点赞
收藏

51CTO技术栈公众号