Oracle12c新特性 – 限制PDB的IO速率

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

如果一个数据库IO过大,容易导致性能下降。一些设计不好的SQL、索引或全表扫描,在并发比较高的情况下,容易使IO过载。如果某个PDB产生了大量的IO,那可能导致CDB中的其它PDB也受影响。
MAX_IOPS和MAX_MBPS这两个参数,只用1个或2个一起使用,都可以达到限制某个PDB的I/O量。

  • MAX_IOPS参数限制每秒I/O操作次数
  • MAX_MBPS参数限制每秒I/O操作的大小
  • 如果这两个参数在某个PDB里都设置了,那都会起作用。

    如果在CDB$ROOT中设置这两个值,那将成为后续每个PDB的默认值。
    默认情况下,这两个参数都为0。如果在PDB中这两个参数为0,CDB$ROOT中也为0,那对于PDB来讲,没有I/O限制。
    有些情况下,虽然物理I/O限制已经达到,但是一些关键I/O仍然允许,比如:对控制文件的访问或对口令文件的访问,但是这些关键I/O也是计入到I/O数统计里的。

    可以使用DBA_HIST_RSRC_PDB_METRIC来计算一个PDB合理的I/O限制。当计算I/O限制值时,可以参考以下列:IOPS、IOMBPS、IOPS_THROTTLE_EXEMPT和IOMBPS_THROTTLE_EXEMPT。
    如果I/O限制达到,OWI中可能会出现”resmgr:io rate limit”的等待事件。

    设置方法如下:

    alter session set container=pdb1;
    ALTER SYSTEM SET MAX_IOPS = 1000 SCOPE = BOTH;
    ALTER SYSTEM SET MAX_MBPS = 5 SCOPE = BOTH;
    

    关于紫砂壶

    感悟技术人生
    此条目发表在Oracle基础知识分类目录,贴了标签。将固定链接加入收藏夹。