29_檢查點佇列(checkpoint queue)
LRU將沒有使用的塊連線起來,按照塊訪問的頻率,熱度 排序
LRUW將髒塊連線起來,以後DBWn寫髒塊就從這個佇列中找去寫,按照塊訪問的頻率,熱度 排序,不經常被訪問的髒塊放在鏈的冷端,優先寫到磁碟上,寫完後變成乾淨塊,這時就可掛在LRU上。
CBC鏈,是按地址排列
我們的髒塊不僅掛在LRUW上還掛在checkpoint queue上
將塊組織連線起來就是為了方便管理
Checkpoint queue連結髒塊,按照塊第一次髒的時間排序,也可以說是按LRBA地址連線。
檢查點佇列按照此方式排序的意義:
RBA : redo block address (修改資料庫會產生日誌,這就是日誌的地址 , 在 checkpoint queue 佇列相應的塊中記下 RBA ) |
LRBA : 塊第一次被髒的那個日誌地址。 |
HRBA :塊最近一次髒的地址。 |
On disk RBA : current 日誌最後一條日誌的地址,即資料庫多能儲存的日誌最後的那個地址。在磁碟上 current 上 |
對於每一個髒塊來說有一個HRBA,LRBA
CKPT程式:兩種工作方式
1、完全檢查點,發生時會觸發DBWn將所有髒塊寫到磁碟上。(關閉資料庫)
2、增量檢查點,將檢查點佇列中第一個髒塊的LRBA地址記錄到控制檔案中(每隔三秒),發生時會檢查檢查點佇列如果發現佇列上髒塊太多,並且發現io不是很忙,那麼將上邊的部分寫到磁碟中,觸發DBWn寫。
Alter system flush buffer_cache;
flush之後RBA變成無窮大了
Select CPDRT,CPLRBA_SEQ||','||CPLRBA_BNO||','||CPLRBA_BOF "LOW RBA", CPODR_SEQ||','||CPODR_BNO||',' ||CPODR_BOF "On disk RBA" ,CPODS,CPODT,CPHBT From x$kcccp;
檢查點是資料恢復的起點。
切換日誌組生成增量檢查點,dbwr可能過一會寫active就是說髒塊還沒寫完或者根本就沒寫。
Alter system checkpoint 全域性檢查點。dbwr立馬寫。
關機慢的原因就是生成全域性檢查點,Buffer中的資料全部寫到磁碟中。
==============================================================================
這是部分檢查點為什麼叫部分就是因為他是一部分,dbwr也要立即寫。
======================================================================================================
增量檢查點往檢查點佇列裡排,排到他dbwr才寫,這就是問什麼redo中active
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-1364716/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python佇列QueuePython佇列
- JDK QUEUE佇列JDK佇列
- Team Queue(佇列)佇列
- postgresql 檢查點調整 checkpoint 轉SQL
- TensorFlow——Checkpoint為模型新增檢查點模型
- 【TUNE_ORACLE】Oracle檢查點(一)檢查點(Checkpoint)概念介紹Oracle
- C# 佇列(Queue)C#佇列
- 【體系結構】SCN與checkpoint(檢查點)
- 佇列(Queue)-c實現佇列
- 高效能佇列 Aeron Queue vs Chronicle Queue佇列
- 【CHECKPOINT】Oracle檢查點優化與故障處理Oracle優化
- laravel原始碼分析-佇列QueueLaravel原始碼佇列
- ORACLE資料庫檢視ACQ(ACTIVE CHECKPOINT QUEUE)資訊Oracle資料庫
- js資料結構--佇列(queue)JS資料結構佇列
- java Queue佇列相關總結Java佇列
- 資料結構之佇列(Queue)資料結構佇列
- Throwing cards away I(queue迴圈佇列)佇列
- Team Queue (佇列的一種應用)佇列
- python的queue佇列獲取資料Python佇列
- java集合類——Stack棧類與Queue佇列Java佇列
- C++ STL 優先佇列 (priority_queue)C++佇列
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列
- 【ASK_ORACLE】檢查點錯誤“Cannot allocate new log”和“Checkpoint not complete”Oracle
- 看動畫學演算法之:佇列queue動畫演算法佇列
- 分散式任務 + 訊息佇列框架 go-queue分散式佇列框架Go
- Python3 執行緒優先順序佇列( Queue)Python執行緒佇列
- 【FreeRtos教程三】STM32 CubeMx——Message Queue(訊息佇列)佇列
- 原始碼解析Synchronous Queue 這種特立獨行的佇列原始碼佇列
- kafka 檢視佇列資訊Kafka佇列
- 佇列Queue:任務間的訊息讀寫,安排起來~佇列
- 1284 海港 普及組 NOIP2016 佇列基礎 簡單列舉 簡單模擬 優先佇列(priority_queue)佇列
- Stack and Queue in JavaScript(Javascript中的資料結構之棧和佇列)JavaScript資料結構佇列
- 使用Chronicle Queue建立低延遲的TB級別的佇列 - DZone佇列
- leetcode 232. Implement Queue using Stacks 用棧實現佇列(簡單)LeetCode佇列
- Oracle完全檢查點和增量檢查點詳解Oracle
- 【TUNE_ORACLE】Oracle檢查點(二)檢查點效能Oracle
- 佇列、阻塞佇列佇列
- [Yii2] yii2-queue 基於redis 佇列測試學習Redis佇列
- 快速開始api開發(五)定時任務 crontab 和 佇列 queueAPI佇列