首页 > 其他分享 >How to Tell if the I/O of the Database is Slow - 2

How to Tell if the I/O of the Database is Slow - 2

时间:2023-06-19 14:02:04浏览次数:40  
标签:Slow file db How ----- IO 等待 Tell wait


IO的类型

平均响应时间直接关联到具体的IO类型:

1. 读或写

2. 单块或多块

db file sequential read”,表明正在等待需要的块。

db file scattered read”,表明正在等待需要的块。

3. 同步或异步

        同步(阻塞)操作等待硬件完成物理IO,完成后能得到通知,合理地管理操作的成功或失败(成功读的情况下可以接收结果)。当需要等待系统调用结果的时候,进程的执行是被堵塞的。

        对于异步(非阻塞)操作,一旦IO请求传递到硬件,或放入操作系统的队列中(典型的情况是物理IO开始之前),系统调用会立即返回。进程的执行不会被堵塞,因为它不需要等待系统调用的结果。它能继续执行,当IO操作有结果时再接收。


响应时间的预期阈值

x 8k(总计512KB)的平均时间应该在未出现IO变慢的情况下大约是20毫秒左右。小请求应该更快(10-20毫秒),大请求的消耗时间应该不多于25毫秒。

1. 异步操作应该至少和同步操作一样快,甚至还要更快。

2. 单块读至少应该和多块读一样快,甚至还要更快。

3. “log file parallel write”,“control file write”和“direct path writes“等待时间应该不多于15毫秒。

db file parallel write")异步写入块,现在还没有写操作响应时间的标准。

        如果DBWR(多块或单块,带或不带IO salves)足够快速能够清理脏块,那么其他的等待事件和统计信息就会显露出来。

        作为规则,超过上述等待事件时间的等待事件都应该详细分析,当对比之前的时间消耗,有明显变化时更需要知晓。

        注意:当系统低于这些最大阈值的时候,并不意味着没有其他的调优方法。

        响应时间因系统而有所不同。例如,接下来的几项内容可以看做是正常平均值:

1. 多块同步读时间是10毫秒。

2. 单块同步读时间是5毫秒。

3. 'log file parallel write'时间是3毫秒。

        以上是基于多块IO比单块IO需要更多的IO子系统资源的前提。如果接受这些建议,redo日志最好放在最快的磁盘,并且没有其它并发活动的争用。


确认IO响应时间

Elapsed Time“。”Response time“和”elapsed time“在上下文中是同义词,可互换的词汇。接下来的列表是一些常见的等待事件,以及可接受的典型等待时间(不是最全的)。

How to Tell if the I/O of the Database is Slow - 2_响应时间


Oracle中明确IO响应时间的方法

10046 trace文件

         当在10046 trace中使用级别8或12时,会包含相关的等待事件,响应时间显示到ela字段。从9i以后,单位是微妙。8i以前是1/100秒(10毫秒)。


WAIT #5: nam='cell single block physical read' 
  ela= 672 cellhash#=2520626383 diskhash#=1377492511 bytes=16384 obj#=63 tim=1280416903276618 
  
 672 microseconds = 0.672 ms

WAIT #5: nam='db file sequential read' 
 ela= 1018 file#=2 block#=558091 blocks=1 obj#=0 tim=10191852599110 
 
 1018 microseconds => 1.018 ms


系统级dump


        对于每个系统级的进程,等待信息包括在进程信息中。通常显示一个活动的”waiting for“,或者等待完成,进程正在CPU中执行”waited for/last wait for“。


"waiting for"

        表示进程处于等待状态。11g之前可以查看”seconds since wait started“字段,显示进程已经等待多久了。从11gR1开始,”total“字段显示等待的时间。

        如果”waiting for“显示一个进程正在等待一个IO相关的操作,”seconds since wait started“>0,表示可能IO丢失,session处于hang状态。(因为之前提到过平均可接受时间是20毫秒,任何IO等待时间超过1秒都需要关注)。

”last wait for“

        是与11g之前的版本相关的,表明进程不在等待(例如正在使用CPU)。等待时间记录到”wait_time“字段。(11g中”wait_time“被”not in wait“替代)

last wait for 'db file sequential read' blocking sess=0x0 seq=100 wait_time=2264 seconds since wait started=0
file#=45, block#=17a57, blocks=1
2264 microseconds => 2.264 ms
”waited for“

        表示session不在等待。通常是11gR1以后的系统级trace中使用。”total“字段表示等待的总时间。

0: waited for 'db file sequential read' file#=9, block#=46526, blocks=1
wait_id=179 seq_num=180 snap_id=1
wait times: snap=0.007039 sec, exc=0.007039 sec, total=0.007039 sec
wait times: max=infinite
wait counts: calls=0 os=0
0.007039 sec => 7.039 ms


Statspack和AWR报告

前台进程和后台进程的等待事件

        报告会展示前台进程与后台进程各自的等待细节。


Avg
                                        %Time Total Wait    wait    Waits   % DB
Event                             Waits -outs   Time (s)    (ms)     /txn   time
-------------------------- ------------ ----- ---------- ------- -------- ------
db file sequential read       2,354,428     0      8,256       4      2.6   21.2
db file scattered read           23,614     0         48       2      0.0     .1

报告中,平均响应时间通过Avg wait (ms)反映(以毫秒计算的平均读)。


表空间IO

         表空间节则展示了从表空间观点得到的一些有用信息:



Tablespace                                                                      
------------------------------                                                  
                 Av       Av     Av                       Av     Buffer  Av Buf 
         Reads Reads/s  Rd(ms) Blks/Rd       Writes Writes/s      Waits  Wt(ms) 
-------------- ------- ------- ------- ------------ -------- ---------- ------- 
APPS_DATA                                                                       
     1,606,553     446     2.2     8.3       75,575       21     60,542     0.9

平均响应时间通过Av Rd (ms)反映(以毫秒计算的平均读)。


等待事件直方图

        等待事件直方图节可以提供组成这些平均值的写操作时间分布。他会展示出所有写操作都接近于平均值,还是会有若干波峰或波谷的情况。



% of Waits                  
                                 -----------------------------------------------
                           Total                                                
Event                      Waits  <1ms  <2ms  <4ms  <8ms <16ms <32ms  <=1s   >1s
-------------------------- ----- ----- ----- ----- ----- ----- ----- ----- -----
db file parallel read       4139    .2    .5   2.5  26.4  23.5  15.0  31.9    .1
db file parallel write      329K  88.5   4.0   2.1   1.9   2.3   1.1    .3    .0
db file scattered read     14.4K  54.3   8.5   6.1  16.6  11.5   2.6    .4

每列都表明每个bucket之间等待事件时间分布的百分比。例如,”<16毫秒“的等待大于”<8毫秒“。只要最大的百分比是从<1毫秒到16毫秒的范围内,那么IO性能通常就可以接受。

标签:Slow,file,db,How,-----,IO,等待,Tell,wait
From: https://blog.51cto.com/u_13950417/6512851

相关文章

  • How to Install Nerd Fonts on Linux
    InstallingNerdFonts-Documentation(rockylinux.org) HowtoInstallNerdFontsonLinux(geekbits.io)没什么鸟用,我估计是因为我是wsl的关系,windows是不是要装这上面NerdFonts-Iconicfontaggregator,glyphs/iconscollection,&fontspatcher......
  • CWnd* pBtn5->ShowWindow(0);
    voidCChangeSizeView::OnButton4(){ //TODO:Addyourcontrolnotificationhandlercodehere CWnd*pBtn5=this->GetDlgItem(IDC_BUTTON5); pBtn5->ShowWindow(0);}voidCChangeSizeView::OnButton6(){ //TODO:Addyourcontrolnotificationhandl......
  • CtfShow信息收集1-20攻略
    CtfShow信息收集1-20关攻略简单更新一下CTF关于信息收集的题目,总共20道,网站地址:https://ctf.show/challenges第一关我们可以看到提示:开发注释没有及时删除,所以直接右键查看源代码提交,过关!!!第二关第二关我们会发现右击什么也没法显示,提示内容为一切前端验证都为纸老虎,我......
  • 并行智能(parallel intelligence)
    并行智能是现实与虚拟现实之间的交互。这是一个复杂的概念,已被应用于许多领域,包括智能交通、艺术创作、计算机视觉和智能传感器。并行智能最早由王飞跃于2004年提出,用于构建可用于验证社会政策、经济战略和军事行动的人工系统。   论文地址:https://ieeexplore.ieee.org/documen......
  • How to AK ABC306
    HowtoAKABC306A题意:吧字符串的每个字符连续输出两遍,记得不要快读,不要忘记输入$n$纪念QinzhA题WA掉B题意:给定长度为$64$的数组$A$,输出$\sum_{i=0}^{63}A_i2^i$暴力模拟即可注意要开unsignedlonglong纪念我WA了$2$次,第一次用的int,第二次......
  • How to enable auto restart of a docker container on system reboot ?
    Howtoenableautorestartofadockercontaineronsystemreboot ?https://amalgjose.com/2021/02/12/how-to-enable-auto-restart-of-a-docker-container-on-system-reboot/#:~:text=How%20to%20enable%20auto%20restart%20of%20a%20docker,Ensure%20the%20docker%20co......
  • How Do ASP.NET Core Services Validate JWT Signature Signed by AAD?
    TableofcontentsBackgroundConfigurationHandleAuthenticationValidateTokenSummaryBackgroundIfweneedtouseJWTBearertokensissuedbyAAD(toeitherauserorserviceprincipal)forauthentication,usuallywecanaddbelowcodeto ConfigureSe......
  • Intellij IDEA_Intellij IDEA下载「Java开发」软件大全
    IntelliJIDEA软件简介IntellijIDEA是一个综合性的Java编程环境,最突出的功能自然是调试(Debug),可以对Java代码,JavaScript,JQuery,Ajax等技术进行调试。IntellijIDEA把Java开发人员从一些耗时的常规工作中解放出来,显著地提高了开发效率。分别是它的WINDOWS、LINUX版本。[下载地址]:后......
  • IntelliJ IDEA安装亚马逊AI编程助手CodeWishperer
    IntelliJIDEA安装亚马逊AI编程助手CodeWishperer简介CodeWishperer是亚马逊2023年4月份推出的实时AI编程助手,它可以实时分析开发人员所写的代码并根据内容为开发者提供多种代码建议,能大幅度提高开发人员的开发效率,同时也可以支持在多个集成开发环境中安转。如IntelliJIDEA、Vi......
  • How to work around rustup-init failure
    Howtoworkaroundrustup-initfailure(JinQing’sColumn,Mar.,2022)rustup-init.exemayfailifsomeanti-virussoftwareisrunningwithrealtimeprotection.Theerrormessageislikethisaftermanyretries:error:couldnotrenamecomponentfilefrom�......