• Oracle12c新特性大全 IO资源隔离


           12cR2中,引入了两个参数MAX_IOPS和MAX_MBPS来限制PDB的物理IO。这两个参数只作用于PDB,不对CDB和非多租户环境生效。另外,这两个参数不限制redo log的写入(LGWR进程)和buffer cache脏块写入磁盘(DBWR进程)。

        IO对数据库性能至关重要。如果某个PDB产生了大量的IO,那可能导致CDB中的其它PDB也受影响。MAX_IOPS参数限制每秒IO操作次数,MAX_MBPS参数限制每秒IO吞吐,如果这两个参数同时在pdb中设置,都会生效起作用。如果在CDB$ROOT中设置这两个值,那么当前CDB中每个PDB都采取此作为默认值。

        默认情况下,这两个参数都为0。如果在PDB中这两个参数为0,CDB$ROOT中也为0,那对于PDB来讲,没有IO限制。

    有些情况下,虽然物理IO限制已经达到,但是一些关键IO仍然允许,比如:对控制文件的访问或对口令文件的访问,但是这些关键IO也是计入到IO数统计里的。

        可以使用DBA_HIST_RSRC_PDB_METRIC来计算一个PDB合理的IO限制。当计算IO限制值时,可以参考以下列:IOPS、IOMBPS、IOPS_THROTTLE_EXEMPT和IOMBPS_THROTTLE_EXEMPT。不推荐设置MAX_IOPS的值小于100,MAX_MBPS的值小于25。

    set linesize 400

    col PDB_NAME for a10

    col BEGIN_TIME for a30

    col END_TIME for a30

    SELECT R.SNAP_ID,

           R.CON_ID,

           P.PDB_NAME,

           TO_CHAR(R.BEGIN_TIME, 'YYYY-MM-D HH24:MI') AS BEGIN_TIME,

           TO_CHAR(END_TIME, 'YYYY-MM-D HH24:MI') AS END_TIME,

           R.IOPS,

           R.IOMBPS,

           R.IOPS_THROTTLE_EXEMPT,

           R.IOMBPS_THROTTLE_EXEMPT,

           R.AVG_IO_THROTTLE

      FROM DBA_HIST_RSRC_PDB_METRIC R, CDB_PDBS P

     WHERE R.CON_ID = P.CON_ID

     ORDER BY R.BEGIN_TIME;

    ALTER SYSTEM SET MAX_IOPS = 1000 SCOPE = BOTH;

    ALTER SYSTEM SET MAX_MBPS = 50 SCOPE = BOTH;

        下面在同一数据库中,设置不同的max_iops和max_mbps查询相同的语句所需要的时间,可以看出max_iops和max_mbps对IO的限制是起作用的。

    MAX_IOPS

    MAX_MBPS

    Elapsed(1)

    Elapsed(2)

    Elapsed(3)

    Avg elapsed time

    0

    0

    00:27.16

    00:27.55

    00:26.94

    27.22

    100

    0

    00:26.87

    00:26.90

    00:27.25

    27.01

    10

    0

    00:37.13

    00:34.23

    00:36.43

    35.93

    8

    0

    00:46.24

    00:44.99

    00:48.33

    46.52

    6

    0

    01:13.92

    01:11.29

    01:01.08

    01:08.75

    4

    0

    01:39.16

    01:41.31

    01:38.91

    01:39:80

    2

    0

    03:53.82

    03:41.95

    03:52.01

    03:49:26

    1

    0

    08:04.78

    08:38.85

    10:07.79

    08::57:14

    0

    1

    05:50.68

    05:54.03

    05:52.32

    05:52:34

    0

    10

    00:33.51

    00:33.38

    00:33.48

    00:33.46

    0

    20

    00:29.71

    00:27.06

    00:28.37

    00:28.38

        当系统出现resmgr: I/O rate limit等待事件时,可以通过如下视图查询当前IO过载影响到的sql,p1值标示当前pdb_id出现此等待事件就需要调整max_iops 和max_mbps合理值,避免影响到关键性业务。

    SELECT H.EVENT,

           H.P1 AS PDB_ID,

           C.PDB_NAME,

           H.SQL_ID,

           TO_CHAR(H.SAMPLE_TIME, 'YYYY-MM-D HH24:MI') AS SAMPLE_TIME,

           H.INSTANCE_NUMBER

      FROM DBA_HIST_ACTIVE_SESS_HISTORY H

      JOIN CDB_PDBS C

        ON C.PDB_ID = H.P1

       AND H.EVENT = 'resmgr: I/O rate limit'

     ORDER BY 4;

  • 相关阅读:
    关于POM声明为provided的依赖,运行程序时报错NoClassDefFoundError
    正负折线图凸显数据趋势变化
    Android的自启动
    基于PLC控制的门禁系统设计【附源码】
    【知识图谱】实践篇——基于医疗知识图谱的问答系统实践(Part2):图谱数据准备与导入
    cl 和 “clangtidy“分别是什么?是同一样东西吗?
    MEM 英语备考第一篇
    【方案】基于5G智慧工业园区解决方案(PPT原件)
    idea leetcode配置
    代码随想录 Day39 动态规划 LeetCode T139 单词拆分 动规总结篇1
  • 原文地址:https://blog.csdn.net/weixin_48804451/article/details/126345141