Oracle内存管理,锁机制以及rac原理学习

一、Oracle体系架构概览

Oracle数据库是一个高度复杂的多进程、多线程系统,其架构设计围绕 高性能高可用性数据一致性 展开,核心模块包括内存结构、进程管理、存储机制和分布式组件。本文将重点剖析内存管理、锁机制与RAC(Real Application Clusters)原理。


二、内存管理:SGA与PGA的协同

1. 内存结构总览

Oracle内存分为 共享内存(SGA)私有内存(PGA) 两部分,前者由所有进程共享,后者为每个会话私有。

SGA(System Global Area)
  • Database Buffer Cache:缓存数据块,减少物理I/O。
    • 通过LRU算法管理块淘汰,支持KEEP池与RECYCLE池分级缓存。
  • Shared Pool
    • Library Cache:缓存SQL解析树与执行计划(通过哈希值匹配)。
    • Data Dictionary Cache:存储表结构、权限等元数据。
  • Redo Log Buffer:临时存储重做日志条目,由LGWR进程写入联机重做日志文件。
  • Large Pool:为备份恢复、并行查询分配大块内存。
  • Java Pool:支持Java存储过程执行。
  • Streams Pool:用于数据复制与流处理。
PGA(Program Global Area)
  • 排序区(Sort Area):处理ORDER BYGROUP BY等排序操作。
  • 会话内存:存储绑定变量、游标状态等会话私有数据。
  • 哈希区:用于哈希连接(Hash Join)操作。

2. 内存管理机制

  • 自动内存管理(AMM):通过MEMORY_TARGET参数统一管理SGA和PGA,动态调整各组件大小。
  • 手动配置:通过SGA_TARGETPGA_AGGREGATE_TARGET分别设置SGA与PGA上限。

示例配置

 
 

你可能感兴趣的:(数据库学习,数据库)