数据库性能检查指导方案 - Part II

** 存储性能评估 **

在存储性能评估的时候,我们使用磁盘性能指数( DPI, Disk Performance Index ),下表列出了 DPI 中的各项指数,这个评分系统并不意味着对磁盘的使用和分配的全方位评估,而只是代表一个晴雨表,反映当前磁盘的使用和分配上是否存在需要改进或者注意的地方。

** MPI ** ** 指数 ** ** **


** 分类 ** ** **

|

** 所需等级 ** ** **

|

** 最高分 ** ** **

调整表和索引

|

|

30

表的行连接问题

|

|

30

分离关键的 Oracle 文件

|

|

30

回滚段的平衡

|

|

30

临时段的平衡

|

|

30

使用最多的前 10 个 SQL 的磁盘使用率

|

<5%

|

60

是否已经调整使用磁盘最多的前 25 个 SQL

|

|

40

MPI 指数

|

总分

|

250

1. 调整表和索引

由于表和索引的数据块通常是被同时读取的,所以应该尽量将表和其相关联的索引放置在不同的磁盘上,以便减少文件的 I/O 冲突。

检查方法:

** select ** i.index_name, t.table_name, t.tablespace_name
from user_tables t, user_indexes i
where t.table_name = i.table_name
and t.tablespace_name = i.tablespace_name;

返回结果是创建在相同表空间中的表和相关联的索引。建议创建新的表空间用于专门存放索引,并将当前的索引 rebuild 到新创建的表空间中。

** alter ** index idx_name rebuild tablespace ts_name;

评估准则:

** 等级 ** ** **

|

** 分数 ** ** **

---|---

表和索引放在同一磁盘上

|

0

存储使用了磁盘阵列,没有进一步调整

|

20

存储使用了磁盘阵列,对于 RAID 类型已经作过调整

|

30

表和索引已经规划在不同磁盘上

|

30

2. 表的行链接问题

当更新一张表,而数据块中又没有足够的剩余空间来容纳所作的修改时,就会发生 “ 行链接 ” 现象,该记录被链接到另外一个有足够空间的数据块中,也就是一条记录跨越了多个数据块,这样在读取该记录的时候就会消耗更多的 I/O ,当数据库中有大量的 “ 行链接 ” 现象存在时,数据库的整体性能就会下降。

检查方法:

** sqlplus /nolog **

** connect app_user/password **

** SQL> @$ORACLE_HOME/rdbms/admin/utlchain.sql **

** SQL> analyze ** table

  1<table_name> **list** **chained** **rows** ; ** **
  2
  3** SQL&gt; select  ** **count** (*) chained_rows, table_name   
  4**from** chained_rows   
  5**group** **by** table_name; ** **
  6
  7如果没有返回任何行,则表示没有  “  行链接  ”  现象。否则将按照已经分析过的表显示每张表中有多少记录出现了  “  行链接  ”  现象。 
  8
  9“  行链接  ”  现象的产生跟  PCTFREE  参数的设置不当有关系。  PCTFREE  值默认为  10%  ,如果系统中存在大量行链接,表示这个参数指定的块保留空间过小,不足以容纳块中所有记录的更新操作。此时应该增大相应表的  PCTFREE  值。 
 10
 11评估准则: 
 12
 13** 等级  ** ** **
 14
 15| 
 16
 17** 分数  ** ** **  
 18  
 19---|---  
 20  
 21存在行链接现象 
 22
 23| 
 24
 250   
 26  
 27不存在行链接现象 
 28
 29| 
 30
 3130   
 32  
 33**3.** **分离关键的** ** Oracle  文件  **
 34
 35无论是出于安全性的考虑还是性能的考虑,都建议将关键的  Oracle  文件分布在可用的独立磁盘上。 
 36
 37首先在错误出现之后,用来被恢复的数据文件和用来恢复的控制文件,重作日志文件,归档日志文件应该分离存放。如果有可能,将下列各个关键文件分布在不同的磁盘上。 
 38
 39系统表空间(  SYSTEM  ),临时表空间(  TEMP  ),回滚表空间(  UNDO  ),联机重作日志文件(  REDO  )和归档日志文件(  ARCH  ),经常访问的用户表空间,经常访问的用户索引表空间,操作系统盘,  $ORACL_EBASE  中的关键  Oracle  软件文件。 
 40
 41至少联机重作日志文件(  REDO  )和归档日志文件(  ARCH  )应该跟其它文件存放在不同的磁盘上,并且由于日志文件的大部分时间为只写属性,所以需要考虑  RAID5  在写方面的弱势,尽量不要将日志文件存放在  RAID5  的阵列组上。 
 42
 43检查方法: 
 44
 45** select  ** file_name, tablespace_name, bytes   
 46**from** dba_data_files   
 47**union** **all**   
 48**select** file_name, tablespace_name, bytes   
 49**from** dba_temp_files   
 50**union** **all**   
 51**select** **name** file_name, **NULL** , **NULL**   
 52**from** v$controlfile   
 53**union** **all**   
 54**select** **member** file_name, to_char(a. **group** #) tablespace_name, b.bytes bytes   
 55**from** v$logfile a, v$log b   
 56**where** a. **group** # = b. **group** #   
 57**union** **all** ( **select** **value** file_name, **NULL** , **NULL**   
 58**from** v$parameter   
 59**where** **name** **like** 'log_archive_dest_%'    
 60**and** **value** **is** **not** **null**   
 61**minus**   
 62**select** **value** file_name, **NULL** , **NULL**   
 63**from** v$parameter   
 64**where** **name** **like** 'log_archive_dest_state%'  ); 
 65
 66返回数据库中所有关键文件存储的位置,由  DBA  和  SA  考察返回的结果,确认已经对于关键文件的存储位置作过符合实际情况的调整。 
 67
 68评估准则: 
 69
 70** 等级  ** ** **
 71
 72| 
 73
 74** 分数  ** ** **  
 75  
 76---|---  
 77  
 78没有调整,全部在单个磁盘上 
 79
 80| 
 81
 820   
 83  
 84没有调整,全部在  RAID  上 
 85
 86| 
 87
 8820   
 89  
 90已经调整 
 91
 92| 
 93
 9430   
 95  
 96**4.** **回滚段的平衡**
 97
 98在  Oracle 9i  和  Oracle9i  之前如果没有使用回滚段自动管理,那么对于回滚段的性能仍然是需要监控并且调整的。 
 99
100检查是否使用了回滚段自动管理: 
101
102** select  ** **name** , **value** **from** v$parameter **where** **name** **like** '%undo_%'  ; ** **
103
104** **
105
106如果返回结果中  undo_management  的值是  AUTO  ,则表示使用了回滚段自动管理,同时  undo_tablespace  值显示了自动管理使用的回滚表空间,  undo_retention  &lt;SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Co</table_name>
Published At
Categories with 数据库类
comments powered by Disqus