ITPub博客

首页 > 数据库 > 数据库开发技术 > 你知道Oracle数据库除了SGA和PGA,还有MGA么?

你知道Oracle数据库除了SGA和PGA,还有MGA么?

原创 数据库开发技术 作者:lukeunique 时间:2020-10-05 07:29:00 0 删除 编辑

出品丨TeacherWhat

题图:Glass plate facade edge@Madrid, Spain by Joel Filipe  from unsplash

关键字:19c、MGA、Managed Global Area、PGA、数据库入门、Database

正文约1500字,建议阅读时间3分钟

目录结构:

1. 什么是MGA?

2. 关于MGA的一些知识要点

3. 19c注意事项

4. 其他参考



什么是MGA?


我们知道SGA(System Global Area)一般由所有服务进程和后台进程共享的内存区域,而PGA(Program Global Area)是由每个服务进程、后台进程专有的的内存,每个进程都有一个PGA。


那什么是MGA呢?


MGA是Managed Global Area的缩写,主要用于在一组进程之间共享内存,简单而言,可以理解为介于SGA和PGA的一种中间状态。


关于MGA (Managed Global Area) 的更为准确的定义,可参考Mike Dietrich's Blog中对Doc ID 2638904.1的引用。



▲引用自Mike Dietrich's Blog


MGA让“少量集合”的进程(甚至是所有进程)在它们的生命周期(通常是一个查询)内共享地址空间。例如,在并行查询中,参与QC进程操作的PQ进程可以共享来自QC进程的名称空间以共享结果。


关于MGA的一些知识要点


以下是关于MGA的一些要点,供参考。


特性版本


从Oracle 12.2.0.1开始推出这个特性,但是仅在Exadata RAC环境中使用,
从Oracle 18c开始, Non-Exadata 的RAC环境也会使用这个特性。


相关应用


目前主要应用为RAC环境的IPC通信,和并行(PX)处理。


相关等待事件


新的latch: MGA用于控制和保护对这段内存的访问,因此Oralce新追加了如下等待事件用于诊断相关性能问题。



latch: MGA shared context root latchlatch: MGA shared context latchlatch: MGA heap latch


关于Latch的相关内容可参考【高级OWI之Latch(闩锁)】


关于MGA大小


由于PGA和MGA是不同的内存区域,因此会从常规页分配PGA,通过/dev/shm领域分配MGA。但是MGA同样会被统计到PGA的使用中去,所以可以通过v$pgastat确认MGA的大小。另外,PGA和MGA的合计大小也将受到PGA_AGGREGATE_LIMIT的限制。


例:


--查看/dev/shm$ ls -alrh /dev/shm/MGA-rw-r----- 1 oracle oinstall 256M Oct 4 00:02 /dev/shm/ora_ffffffffb06a0994_5cd96_1_KSIPC_MGA_NMSPC_1_0_0.dat--MGA的大小SQL> set linesize 200SQL> col VALUE format 99999999999SQL> select * from v$pgastat where NAME like '%MGA%';
NAME VALUE UNIT CON_ID----------------------------- ------------ ------------ ----------MGA allocated (under PGA) 268435456 bytes 0maximum MGA allocated 268435456 bytes 0


HugePage的使用


通过设置_use_large_pages_for_mga参数为True,可以让MGA使用HugePage。


例:

SQL> select a.ksppinm "PARAMETER",b.ksppstvl "VALUE",a.KSPPDESC "DESCRIPTION"from xksppia,xksppi a, xksppia,xksppcv bwhere a.indx = b.indxand a.ksppinm like '%_use_large_pages_for_mga%';
PARAMETER VALUE DESCRIPTION------------------------------ ---------- ------------------------------------------------------------_use_large_pages_for_mga       FALSE      MGA largepage enabled


19c注意事项 


在19c的版本上如果PGA_AGGREGATE_LIMIT 参数被设置成了0(pga_aggregate_limit=0)的话,可能会遭遇Bug 30851951 ,产生过多的KSIPC_MGA.dat文件,进而超过OS的file-max限制导致实例崩溃或者挂起。
这个问题在19.8版本上得到修正。


所以,在19c版本上,设置pga_aggregate_limit=0请留意。


其他参考


目前关于MGA的一些公开参考资料并不多,主要可以参考以下内容。


MOS Note:

MGA (Managed Global Area) Reference Note (Doc ID 2638904.1)

官方在线文档:

Grid Infrastructure Installation and Upgrade Guide for Oracle Solaris
https://docs.oracle.com/en/database/oracle/oracle-database/19/cwsol/configuring-additional-shared-memory-identifiers-limit.html#GUID-A655E968-61F2-441B-97B3-61BE6A6487C1

Configuring Additional Shared Memory Identifiers Limit
Starting with 18c, on Oracle Solaris systems,
Oracle Database uses a new method of sharing memory among a group of processes, also known as Managed Global Areas (MGA). ★
The operating system memory allocation mechanism for this new method is Optimized Shared Memory (OSM).

Blog:

https://mikedietrichde.com/2020/08/20/mga-issue-and-it-is-fixed-with-oracle-19-8-0-and-newer/

MGA Issue – and it is fixed with Oracle 19.8.0 and newer

https://chinaraliyev.wordpress.com/2019/04/29/parallel-shared-hash-join/

Parallel Shared Hash Join
This is a new method which is used to share memory between processes.
In addition new stats names appeared in v$pgastat (MGA allocated (under PGA),maximum MGA allocated).
Also, to protect the new shared memory region new latches and appropriate wait events (like latch: MGA.. ) have been introduced.

https://www.doag.org/formes/pubfiles/10893399/2018-DB-Anil_Nair-Oracle_RAC_Performance_Internals-Praesentation.pdf

New memory pool: MGA (Managed Global Area)
–IPC buffers are allocated in the MGA (used to be the PGA before Exafusion)
–MGA allows a set of processes to efficiently share an address space
–MGA is not SGA or PGA, but something in-between

——End——






专注于技术不限于技术!

用碎片化的时间,一点一滴地提高数据库技术和个人能力。

欢迎关注!



关于小编:

Oracle数据库技术支持一线老兵。10+年数据库运维/开发/技术支持经验,多年项目维护/开发/团队管理经验,熟悉Oracle/MySQL/DB2等关系型数据库,翻译出版《MySQL基础教程》,Oracle 11g OCM大师认证、10g/11g/12c OCP、RAC&GI  OCE、Cloud等认证专家,IBM DB2 数据库V8.1 DBA认证。

本公众号文章仅代表个人观点,与任何公司无关。



【避坑指南】12.2 新功能优化器统计顾问(Optimizer Statistics Advisor)及常见问题和解决方法
读了这些数据库经典书,你已经超过了90%的Oracle技术者(文末彩蛋)
2020年了,还有必要学习Oracle数据库技术么?
快速搞懂Oracle 19c安全新特性 (二)Privilege Analysis(权限分析)
在线Oracle SQL学习环境--Live SQL




原文作者:SQL和数据库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-07-21

  • 博文量
    107
  • 访问量
    63572