熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

不同平台的數據庫異步I/O的使用

2013-11-13 12:48:00  來源: Oracle 

  一般說來異步I/O是和同步I/O相比較來說的如果是同步I/O當一個I/O操作執行時應用程序必須等待直到此I/O執行完 相反異步I/O操作在後台運行I/O操作和應用程序可以同時運行提高了系統性能; 使用異步I/O會提高I/O流量如果應用是對裸設備進行操作這種優勢更加明顯 因此象數據庫文件服務器等應用往往會利用異步I/O使得多個I/O操作同時執行
  
   文件集的安裝
  要在aix平台上使用異步I/O特征系統必須安裝有文件集bosrteaio可以通過如下命令檢查之:
  lslpp l bosrteaio
  然後再通過smitty(smit)使得異步I/O可用
  #smit chgaio
  STATE to be configured at system restart available
  
   如何確定是否需要使用異步I/O
  a 使用VMSTAT命令查看列wa如何其值超過%則使用;
  b 使用命令iostat * * 如果%tm_act超過%則使用;
  值得注意的是在SMP系統中vmstat的值usidwa列是所有處理器之間的平均值但是每個處理器的i/o等待值卻不是平均值而是一個全局的統
  
  計數值
   當前aio服務器的數目
  pstat a | grep aios | wc l
   如何設置aio 服務器
  一般有三個規則可以用來決定因素aio的數目
  a 限定MAXIMUM等於十倍的當前使用的物理磁盤數MINIMUM等於一半的MAXIMUM數;
  b 設置MAXIMUM為MINIMUM為默認值監控系統正常的負荷情況過一段時間後再進行調整如下:
  MAXIMUM=當前運行的aio數+
  MINIMUM=當前運行的aio數
  c 在最高I/O活動開始之前使用vmstat s看結果中的iodones隔一時間段再執行查看二次iodones之差值便可以知道在這個時間段內有多少個物理I/O發生了如果便可以考慮增加MAXIMUM數再進行觀察調整
   異步I/O的幾個參數
  可以使用chdev或是smit來修改有關AIO的參數主要考慮如下幾個
  MINIMUM number of servers :指定分配給異步I/O進程的最少內核進程數
  MAXIMUM number of servers :指定分配給異步I/O進程的最大內核進程數
  Maximum number of REQUESTS :指定能同一時間分配的最大數目的異步I/O請求數它包括進程中的請求也包括等待中的請求數最大數不能小於MAXIMUM number of servers它定義在/usr/include/sys/limitsh中
  Server PRIORITY:指定分析給異步I/O進程的優先級建議用默認值
  STATE to be configured at system
  
  restart:指定系統初始化時異步I/O進程的狀態可能值是)defined(處於定義狀態且不可用))available(可用)STATE of FastPath:如果選擇disable則表明強迫所有的I/O活動都通過異步內核進程默認是enable
  
   此平台上的數據庫如oracle中使用異步i/o則需要設置參數disk_asynch_io = TRUE就可以了
  
  Hpux使用Aio的補丁要求
  bHPUX i的補丁要求為
  PHKL_ vm preemption point mlock/async_io
  PHKL_ asyncio driver patch
  使用swlist l product檢查
  創建aio的字符設備
  a建立aio字符設備
  #/sbin/mknod /dev/async c x
  b調整設備的屬主這個例中假定用戶為oracle組為dba
  #chown oracle:dba /dev/async
  c調整設備的權限位
  #chmod /dev/async
  Hpux要要調整的內核參數
  調整內核參數據需要使用root用戶
  a把asyncdsk置為in
  sam> Kernel Configuration > Drivers>asyncdsk調整為in
  b調整max_async_ports參數
  這個參數限定的是同時使用/dev/async設備的最大進程數對於Oracle這個參數應大於等於init< sid>ora中的processes+後台的進程數當max_
  
  async_ports的值達到時其余的進程將采用同步IO的方式
  c調整set aio_max_ops參數
  這個參數所限定的是在任意一個時間點排隊的Aio操作的最大的數目一般保持默認值就可以可以用glance監測一下
  d調整fs_async參數
  這個參數表明的是對文件系統的寫是否采用Aio的方式設定fs_async=指定對於文件系統寫不用Aio設定fs_async=則指定使用aio的方式Ora
  
  cle不建議將這個什設置為
  其它方面設置
  值得注意的是要為oracle用戶的組(一般為dba)設定MLOCK的權限否則在數據庫啟動會報錯或在庫運行時會出現莫名其妙的數據庫hang的現象
  
  具體說明如下
  a有二個命令getprivgrp(檢查)setprivgrp(設置)
  eg:檢查dba組是否有MLOCK的權限
  root#getprivgrp dba
  eg:設定dba組的MLOCK的權限
  roolt#setprivgrp dba MLOCK
  b也可以把設定加入配置文件中這樣在下次啟動時就自動生效了
  在/etc/privgroup中加入如下的一行
  dba MLOCK
  如果privgroup不存在可以編輯一個
  
   i 及以後的版本 :在init< sid>ora中設定disk_asynch_io = TRUE
   檢查一下aio是否生效了
  #fuser /dev/async
  有進程列出來說明aio已經生效了
   在hp上使用異步I/O時可能還有些問題會出現一些ora的錯誤但是hpi後應沒有問題了
From:http://tw.wingwit.com/Article/program/Oracle/201311/16605.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.