【每日一摩斯】-Fundamentals of the Large Pool

简介: 以下内容介绍从Oracle 8引入的‘Large Pool’。什么是Large Pool(翻译过来叫“大池”)?       大池是SGA中一块类似于shared pool的区域,但是它的使用又有严格的限制,仅有几种类型和大小的内存能够在这个池中分配。

以下内容介绍从Oracle 8引入的‘Large Pool’。


什么是Large Pool(翻译过来叫“大池”)?

       大池是SGA中一块类似于shared pool的区域,但是它的使用又有严格的限制,仅有几种类型和大小的内存能够在这个池中分配。

       大池的内存不是来自于shared pool,而是直接来自于SGA,因此需要在实例启动时增加共享内存的容量。

       大池的大小由LARGE_POOL_SIZE参数决定,可以分配的最小内存chunk由LARGE_POOL_MIN_ALLOC参数决定。默认没有大池,必须显示配置。

       大池的三种主要用途:

a. 用于通过MTS(多线程服务器)方式连接的session的UGA区域。

b. sequential file IO的缓存(例如:当有多个IO Slaves时,提供给管理recovery/RMAN的server)。

       从Oracle 8i开始,如果PARALLEL_AUTOMATIC_TUNING参数是TRUE,大池也可以用于并发执行缓存的分配。


注意:从10g开始,如果sga_target=0,则px msg缓存存于shared pool中,如果sga_target>0,则px msg缓存存于large pool中。

select * from V$SGASTAT;

POOL         NAME                            BYTES
------------ -------------------------- ----------
large pool   PX msg pool                   1076000


       参数PARALLEL_AUTOMATIC_TUNING参数已经被deprecated。

       shared pool负责保护large pool的内存分配和管理。和shared pool不同,这里没有LRU(最近最少使用)机制,所以内存chunk从不会置换出大池-也就是需要每个session必须显示分配和释放内存。如果没有free内存用于处理请求,那么就会报ORA-4031的错误。

       大池中空间的使用可以通过V$SGASTAT视图查看。


MTS和大池

       如果没有配置大池,MTS将仅能用这个池给session的UGA。当启动新的session时,shared pool中的一小块内存将会被分配(也称作fixed UGA),其余的session内存(UGA)将来自于大池。如果大池没有足够的空间,ORA-4031的错误会被报出:

ORA-04031: unable to allocate 636 bytes of shared memory

("large pool","EMPSCOTT","session heap","define var info")

       大池分配的内存chunk最小是参数LARGE_POOL_MIN_ALLOC定义的字节数,以避免碎片化。当与不使用大池配置的内存使用比较,这将会影响每个MTS的session使用的内存总量。

       如果没有配置大池,MTS会使用shared pool作为整个UGA,Oracle 7就是这样做的。

注意:Oracle 10g,引入了ASSM(自动共享内存管理)的特性,通过设置SGA_TARGET参数,它会自动决定数据库buffer cache(默认池)、Shared pool、大池和Java pool的大小,如下MOS中的文档包含更多的信息:

Article-ID:       Note 257643.1

Title:              Oracle Database 10g Automated SGA Memory Tuning

目录
相关文章
|
2月前
|
存储 SQL 分布式计算
MaxCompute 聚簇优化推荐原理
基于历史查询智能推荐Clustered表,显著降低计算成本,提升数仓性能。
233 4
MaxCompute 聚簇优化推荐原理
|
前端开发 Dubbo Java
医疗管理系统-项目概述和环境搭建
医疗管理系统-项目概述和环境搭建
438 0
|
安全 网络安全 数据安全/隐私保护
网络ACL
网络ACL 网络ACL(Access Control List)是一种网络安全机制,用于控制网络中数据流的进出和传递。它基于规则列表,定义了允许或拒绝通过网络设备(如路由器、防火墙)的数据流。 网络ACL通常用于限制或过滤特定类型的流量,以实现对网络资源和服务的保护和管理。它可以根据不同的条件对数据流进行过滤,如源IP地址、目标IP地址、源端口、目标端口、协议类型等。 下面是网络ACL的一些常见应用场景和功能: 1. 访问控制:网络ACL可以设置规则,限制特定IP地址或子网访问某些网络资源。例如,可以设置拒绝来自某个IP地址的所有入站流量,或者只允许特定子网的流量通过。
973 0
|
关系型数据库 MySQL 数据库
一文剖析MySQL主从复制异常错误代码13114
一文剖析MySQL主从复制异常错误代码13114
1593 0
|
索引 存储 数据库
数据库设计规范
基于阿里数据库设计规范扩展而来
49728 4
|
SQL 关系型数据库 MySQL
一文带你了解MySQL的DCL语句
一文带你了解MySQL的DCL语句
768 1
在Linux中,进程状态有哪些?
在Linux中,进程状态有哪些?
我们需要安装`websockets`库(如果尚未安装)
我们需要安装`websockets`库(如果尚未安装)
|
人工智能 自然语言处理 安全
构建未来:AI驱动的自适应网络安全防御系统提升软件测试效率:自动化与持续集成的实践之路
【5月更文挑战第30天】 在数字化时代,网络安全已成为维护信息完整性、保障用户隐私和企业持续运营的关键。传统的安全防御手段,如防火墙和入侵检测系统,面对日益复杂的网络攻击已显得力不从心。本文提出了一种基于人工智能(AI)技术的自适应网络安全防御系统,该系统能够实时分析网络流量,自动识别潜在威胁,并动态调整防御策略以应对未知攻击。通过深度学习算法和自然语言处理技术的结合,系统不仅能够提高检测速度和准确性,还能自主学习和适应新型攻击模式,从而显著提升网络安全防御的效率和智能化水平。 【5月更文挑战第30天】 在快速迭代的软件开发周期中,传统的手动测试方法已不再适应现代高效交付的要求。本文探讨了如
|
负载均衡 安全 Cloud Native
案例分享:F5助力车企打造智能高效自动化应用
案例分享:F5助力车企打造智能高效自动化应用
145 0