头图

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_IOPSMAX_MBPSElapsed(1)Elapsed(2)Elapsed(3)Avg elapsed time
0000:27.1600:27.5500:26.9427.22
100000:26.8700:26.9000:27.2527.01
10000:37.1300:34.2300:36.4335.93
8000:46.2400:44.9900:48.3346.52
6001:13.9201:11.2901:01.0801:08.75
4001:39.1601:41.3101:38.9101:39:80
2003:53.8203:41.9503:52.0103:49:26
1008:04.7808:38.8510:07.7908::57:14
0105:50.6805:54.0305:52.3205:52:34
01000:33.5100:33.3800:33.4800:33.46
02000:29.7100:27.0600:28.3700: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;

1 声望
0 粉丝
0 条评论
推荐阅读
一次偶然机会发现的MySQL“负优化”
今天要讲的这件事和上述的两个sql有关,是数年前遇到的一个关于MySQL查询性能的问题。主要是最近刷到了一些关于MySQL查询性能的文章,大部分文章中讲到的都只是一些常见的索引失效场合,于是我回想起了当初被那个...

骑牛上青山5阅读 1.2k评论 3

Mysql索引覆盖
通常情况下,我们创建索引的时候只关注where条件,不过这只是索引优化的一个方向。优秀的索引设计应该纵观整个查询,而不仅仅是where条件部分,还应该关注查询所包含的列。索引确实是一种高效的查找数据方式,但...

京东云开发者2阅读 661

封面图
MySQL 数据库索引技术原理初探
一本书 500 页的书,如果没有目录,直接去找某个知识点,可能需要找一会儿,但是借助前面的目录,就可以快速找到对应知识点在书的哪一页。这里的目录就是索引。

mylxsw1阅读 1.2k

Mybatis源码解析之执行SQL语句
通过调用 session.getMapper (AccountMapper.class) 所得到的 AccountMapper 是一个动态代理对象,所以执行 accountMapper.selectByPrimaryKey (1) 方法前,都会被 invoke () 拦截,先执行 invoke () 中的逻辑。

京东云开发者3阅读 769评论 1

封面图
第十六届中国大数据技术大会五大分论坛顺利举办!
1 月 8 日下午,由苏州市人民政府指导、中国计算机学会主办、苏州市吴江区人民政府支持,CCF 大数据专家委员会、苏州市吴江区工信局、吴江区东太湖度假区管委会、苏州市吴江区科技局、苏州大学未来科学与工程学院...

MissD阅读 5.6k

2023最新MySQL高频面试题汇总
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~

程序员大彬3阅读 732

从实战出发,聊聊缓存数据库一致性
在云服务中,缓存是极其重要的一点。所谓缓存,其实是一个高速数据存储层。当缓存存在后,日后再次请求该数据就会直接访问缓存,提升数据访问的速度。但是缓存存储的数据通常是短暂性的,这就需要经常对缓存进行...

云叔_又拍云2阅读 627

封面图
1 声望
0 粉丝
宣传栏