当前位置: 首页 > news >正文

读书笔记:Oracle共享池:数据库内存管理的心脏

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

Oracle共享池:数据库内存管理的"心脏"

如果把Oracle数据库比作一个人,那么共享池(SGA)就相当于它的"心脏",负责为整个系统输送"养分"(内存资源)。这个"心脏"要不大不小刚刚好——太小了会供血不足,太大了又会增加负担。

共享池是干什么的?

想象一下,你每次去图书馆查资料:

  • 第一次查《三体》,需要花时间从书架上找
  • 第二次再查《三体》,图书管理员直接就从手边拿给你了

共享池就是Oracle的"管理员工作台",它会把:

  • 经常执行的SQL语句(就像热门书籍)
  • PL/SQL程序代码(像常用的工具书)
  • 数据库字典信息(像图书目录)
    都放在手边,随用随取。

最常见的"心脏病":不用绑定变量

这就像每次借书都要重新编目:

  • "我要借《三体》第一册"
  • "我要借《三体》第二册"
  • "我要借《三体》第三册"...

虽然都是《三体》,但因为编号不同,管理员每次都要重新查找。正确的做法应该是:

-- 不好的写法
SELECT * FROM books WHERE title='三体1';
SELECT * FROM books WHERE title='三体2';-- 好的写法(使用绑定变量)
SELECT * FROM books WHERE title=:book_name;

真实案例:每天重启的数据库

有个客户的数据库就像个"心脏病患者":

  • 共享池设了1GB(比实际需要大10倍)
  • 每天必须重启一次,否则就会"心肌梗塞"
  • 还想买更多服务器"强心针"

我们给出的"治疗方案"很简单:

  1. 教会应用程序使用绑定变量
  2. 把共享池从1GB降到100MB
  3. 结果:系统跑得比原来还快,再也不用每天重启了

其他重要"器官"

除了共享池,Oracle还有几个关键内存区:

  1. 大池:专门处理"大件物流"

    • 共享服务器连接
    • 并行查询
    • 就像物流公司的"大件物品专用通道"
  2. Java池:Java程序的"VIP包厢"

    • 跑Java存储过程的地方
    • 专用服务器模式下很小
    • 共享服务器模式下需要更大空间
  3. 流池:数据复制的"快递中心"

    • 给GoldenGate/Streams等工具用
    • 默认会占用共享池10%空间
    • 用了这些工具记得单独设置
  4. 内存列存储:分析查询的"加速器"(需额外付费)

    • 像给每列数据都建了索引
    • 21c开始有免费基础版(限16GB)

健康小贴士

想让你的Oracle"心脏"健康跳动,记住:

  1. 一定要用绑定变量——这是最好的"保健品"
  2. 共享池不是越大越好——合适最重要
  3. 特殊功能(如Java、流复制)要配置专用内存区
  4. 定期检查"心电图"(监控共享池使用情况)

只要遵循这些原则,你的数据库就能拥有强健的"心脏",长久稳定地运行!

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

http://www.njgz.com.cn/news/1254.html

相关文章:

  • Python类的定义_类和对象的关系_对象的内存模型
  • Python对2028奥运奖牌预测分析:贝叶斯推断、梯度提升机GBM、时间序列、随机森林、二元分类教练效应量化研究
  • 学习笔记:MySQL:Innodb统计信息参数
  • 库卡气体保护焊机器人省气的方法
  • 物联网技术对于农业的运营都起到了哪些作用
  • [07.28学习笔记] Self-attetion Cross-attetion - Luna
  • 【LLM】Transformer各模块PyTorch简单实现Demo
  • 如何在FastAPI中玩转Schema版本管理和灰度发布?
  • C++ Qt开发QUdpSocket网络通信组件
  • fhq-treap学习笔记
  • 7/28
  • Bruce Momjian 深圳 meetup 回顾
  • 贪心
  • sqlite3 本地数据库可视化工具
  • [题解] P5743 【深基7.习8】猴子吃桃
  • gds 格式文档
  • 微服务学习-02-微服务技术栈整理
  • JUC线程池: ScheduledThreadPoolExecutor详解
  • [题解] P5735 【深基7.例1】距离函数
  • uv命令怎么安装并且让gitlab-runner用户可以执行
  • NRF54L15 TAMPC — Tamper controller 作用介绍
  • 线上故障的排查清单,运维小哥拿走不谢!
  • NRF54L15 AAR作用介绍
  • NRF54L15 CCM功能
  • ANSYS Products 2025 R2 安装步骤详解(附环境变量与多盘切换说明)
  • 【LeetCode 206】算法:反转链表
  • 如何使用各种工具和命令来检查Ubuntu中的CPU使用情况?
  • 写作业
  • CAXA CAM 制造工程师 2023 下载安装全攻略,一看就会!
  • 恭贺开源之夏 2025 IvorySQL 项目中选学生