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

影响Oracle数据库打开速度的因素

当Oracle发起一个事务需要更改数据时,如果所涉及的数据块不在BUFFER CACHE中,那么Oracle服务进程首先会将相关数据块从数据文件中读进BUFFER CACHE进行更改(直接路径读除外),更改后的数据块称之为脏块(DIRTY BLOCK)。当事物提交或者回滚时,基于性能上的考虑,脏块并不会立刻写至数据文件,而是由LGWR进程优先将脏块的信息写至ONLINE REDOLOG,只有当LGWR进程返回写成功之后,事务才算提交成功。这就是Oracle为了保证不丢数据的“日志优先写”原则。
提示:为了保证数据不丢失,LGWR进程写REDOLOG时,一般会采用同步I/O。
“日志优先写”原则带来的问题就是当数据库异常宕机时,可能会仍有部分脏块在BUFFER CACHE的脏缓冲区列表中,并没写进数据文件。所以在启动数据库时,首先会由服务器进程进行实例恢复(CRASH RECOVERY,又叫前滚),即服务器进程扫描ONLINE REDOLOG,在BUFFER CACHE中重构未写进数据文件的脏块信息之后,会通知DBWR进程将脏块写进数据文件。CRASH RECOVERY完毕以后,BUFFER CACHE里既有数据库异常宕机时已经提交还没有写入数据文件的脏数据块,也包含了事务被突然终止,以致既没有提交又没有回滚的事务所弄脏的数据块。CRASH RECOVER完成操作之后则由SMON进程扫描UNDO段头进行事务恢复(TX RECOVERY,又叫后滚),最终将数据库恢复至宕机前的那一刻。
由前面分析可知,除去硬件性能等因素以外,数据库打开的速度受2个自身因素影响:
1、在线日志(ACTIVE和CURRENT状态)所对应的脏块数量。脏块数量越多,数据库恢复的时间就越长,数据库打开速度越慢。需要恢复的脏块的数量可以在CRASH RECOVERY日志中看到,如下所示:
Sat Jul 28 22:27:47 2012
Completed redo scan
134146 redo blocks read, 8902 data blocks need recovery
2、需要恢复的事务的数量和大小。事务数量越多,事务越大,数据库打开越慢。为加快事务恢复速度,后台进程往往采用并行恢复,其并行度主要受参数fast_start_parallel_rollback影响。

http://www.lryc.cn/news/351262.html

相关文章:

  • dify:开源 LLMOps平台。
  • CCF20220601——归一化处理
  • 用Ai编写一个电机驱动程序
  • 【C++入门】—— C++入门 (下)_内联函数
  • Java数据结构与算法(最小栈)
  • 7 Series FPGAs Integrated Block for PCI Express IP核 Advanced模式配置详解(三)
  • k8s 部署mqtt简介
  • 汇凯金业:量化交易中常用的数学模型有哪些
  • 局部直方图均衡化去雾算法
  • selenium环境安装和web自动化基础
  • 【UE Websocket】“WebSocket Server”插件使用记录
  • spring中依赖注入(DI)是什么?
  • paligemma、Grounding-DINO-1.5简单无需标注无需训练直接可以使用的VLM图像到文本模型
  • FreeRTOS学习——FreeRTOS队列(下)之队列创建
  • js实现鼠标拖拽多选功能
  • postgres_exporter 监控pg坑一:备库无延迟但是监控告警备库延迟
  • vue打包部署到springboot,通过tomcat运行
  • 如何有效防止数据丢失
  • linux命令中arj使用
  • UE5中搭建一个简单的海岛
  • 爬虫学习--12.MySQL数据库的基本操作(下)
  • js的算法-选择排序(简单选择排序)
  • Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版
  • 路由聚合和VRRP技术
  • 【原创教程】三菱FX3U系列培训专题课教案
  • 清空了电脑回收站,之前的文件还能否恢复?
  • 设计模式——职责链(责任链)模式
  • 功耗相关总结
  • 17款奔驰GLS450升级头等舱行政独立四座马鞍是什么样体验
  • 浏览器的下载行为基本原理