在oracle内存结构进程统称为,把Oracle内存结构说透

引言

Oracle Server由两个实体组成:实例(instance)与数据库(database)。

实例(instance)包括:内存结构(SGA、PGA)和用户进程,实例为用户同数据库交互的媒介。

数据库(database)包括:物理结构(数据文件、日志文件、控制文件等)和逻辑结构(表空间、段、区、块、等)

Oracle内存结构与oracle性能息息相关,内存结构是CPU与IO桥梁,内存结构对于数据库来说非常重要。

一、内存结构概述

内存结构主要有:系统全局区(System Global Area简称SGA)和(Process Global Area简称PGA)组成。

系统全局区SGA:当启动实例的时候分配,是一组包含一个Oracle实例的数据和控制信息的共享内存结构。

进程全局区PGA:当Server进程建立时分配,此区域包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反。PGA 是只被一个进程使用的私有区域。PGA 在创建进程时分配,在终止进程时回收。

二、系统全局区SGA

1.SGA由几个内存结构组成

数据高速缓冲区(Database Buffer Cache)

共享池(Shared Pool)

重做日志缓冲区(Redo Log Cache)

其他结构(如锁管理)

附图:

0818b9ca8b590ca3270a3433284dd417.png

2.SGA可选内存结构

大池

JAVA池

注:Fixed Sized:Oracle的不同平台和不同版本可能不一样,对于确定环境是一个固定值,里面存储SGA各部分组件信息,引导建立SGA的区域。

Variable Size:包括share_pool_size、java_pool_size、large_pool_size等内存设置和管理数据缓冲区等内存结构的 Hash table、块头信息等。0818b9ca8b590ca3270a3433284dd417.png

Datebase Buffers:数据缓冲区,个版本包含的内容不同。

Redo Buffers:重做日志缓冲区的实际大小,和Log_buffer的值稍有不同。

SGA的管理:

△9i:SGA总大小由初始化参数SGA_MAX_SIZE确定。各个内存组件大小之和不能超过这个参数,在这个大小之下,SGA各个内存组件可以在不重启数据库的情况下直接修改大小,所以叫做SGA的动态管理。

△10g:SGA大小既可以像9i一样动态管理,也可以实施SGA的自动管理。只需要设置初始化参数SGA_TARGET,SGA各个内存组件就可以由数据库自动设置大小,设置的依据来源于自动收集的统计信息。

△11g:oracle的内存管理方式可以根据版本向下兼容,oracle 11g中引入了自动内存管理(Automatic Memory Management),仅用两个参数完成oracle的内存管理工作,参数说明:MEMORY_TARGET:oracle所能使用的最大内存,该参数可以动态调整;MEMORY_MAX_TARGET:MEMORY_TARGET参数所能动态设定的最大值,不能动态调整,需要重启数据库。

0818b9ca8b590ca3270a3433284dd417.png

①数据高速缓冲区(Database Buffer Cache):数据高速缓冲区存储了从数据文件中检索到的数据块的镜像拷贝。

△获取和修改数据提高了性能

△通过LRU算法管理

△db_block_size决定了主块大小

△定义缓冲区数取决于db_block_size

②共享池(Shared Pool):存储最近执行过的sql语句和最近使用过的数据定义。在分析阶段,服务器进程使用 SGA 中称作共享池的区域来编译 SQL 语句。

△包括两个与性能有关的内存结构

库缓存:存储最近使用的SQL 语句信息。如果重新执行 SQL 语句而且共享 SQL 区域已经包含语句的执行计划,那么服务器进程就不需要分析语句。库高速缓存通过减少分析时间和内存要求来改善重新使用 SQL 语句的应用程序的性能。

数据字典缓存:数据库中最近使用的定义的集合。它包括有关数据库文件、表、索引、列、用户、权限以及其它数据库对象的信息。

△调整共享池大小(shared_pool_size)

alter  system set  shared_pool_size  =  “X”;

③重做日志缓冲区(Redo Log Cache):缓存对于数据块的所有修改,主要用于恢复其中的每一项修改记录。

△修改记录叫做重做条目

△重做条目包含重构和重做修改信息

△log_buffer定义大小

注:执行DDL或DML语句时,服务器进程首先将事务变化记载到重做日志缓冲区,然后才会修改数据高速缓存。

④大池:一个可选的SGA区域,可以缓解共享池(Shared Pool)负担。PARALLEL_AUTOMATIC_TUNING = TURE,大池的空间是动态的,由系统控制。

△主要作用:共享服务器的会话区域(UGA),服务器进程I/O,使用RMAN备份恢复,并行查询缓存信息。

△不使用LRU链表管理

△指定大小,alter  system  set  large_pool_size = “X”;

△动态指定大小

查看大池已使用或未使用内存

0818b9ca8b590ca3270a3433284dd417.png

注:如果发现未使用内存很大或者不断增加,表示大池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大大池的内存。

⑤java池:可选的SGA区域,属于SGA中的可变区域,Java池的内存用于存储所有会话中特定Java程序代码和JVM中的数据

△java命令需要分析的环境

△安装使用java需要

△由参数JAVA_POOL_SIZE设置。Java池最大可到1 GB,不能动态调整。

查看java已使用或未使用内存

0818b9ca8b590ca3270a3433284dd417.png

注:如果发现未使用内存很大或者不断增加,表示JAVA池可能分配了太多的内存,如果未使用内存很小或者不断减少,表示可能需要加大JAVA池的内存。

三、进程全局区(PGA)

进程全局区(PGA):此区域包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反。PGA 是只被一个进程使用的私有区域。PGA 在创建进程时分配,在终止进程时回收。

进程全局区(PGA)包括以下组件:

△排序区:用于处理 SQL 语句时可能需要的任何排序

△会话信息:包括用于会话的用户权限和性能统计

△游标状态:标明处理会话当前使用的 SQL 语句中的阶段

△游标状态:标明处理会话当前使用的 SQL 语句中的阶段

PGA 在创建进程时分配,在终止进程时回收。

扩展阅读(网络参考资料,以下资料归属网络作者,请注重“版权”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值