lgwr的兩種模式(post/wait和polling)

来源:https://www.cnblogs.com/nathon-wang/archive/2019/01/17/10284687.html
-Advertisement-
Play Games

11.2之前,oracle的lgwr寫入模式為post/wait 11.2之後新增了polling模式,可以與post/wait模式自動切換 通過隱藏參數 _use_adaptive_log_file_sync 參數來控制 查看該隱藏參數的方法: 當參數設置為false時,lgwr還是採用post/ ...


11.2之前,oracle的lgwr寫入模式為post/wait

11.2之後新增了polling模式,可以與post/wait模式自動切換

通過隱藏參數 _use_adaptive_log_file_sync 參數來控制

查看該隱藏參數的方法:

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ
  FROM SYS.x$ksppi x, SYS.x$ksppcv y
WHERE x.indx = y.indx
  AND x.ksppinm LIKE '%_use_adaptive_log_file_sync%';

當參數設置為false時,lgwr還是採用post/wait方式將日誌從buffer寫入磁碟

當參數設置為true是,lgwr寫入方式會自動在post/wait和polling模式之間進行切換,可能會造成比較嚴重的log file sync (當使用polling模式時)

建議關閉此參數:

alter system set "_use_adaptive_log_file_sync"=FALSE;

 

模式切換時,lgwr的trace中會記錄類似如下的信息:

RACDB1_lgwr_27890.trc-6094-Warning: log write elapsed time 649ms, size 11252KB RACDB1_lgwr_27890.trc-6095- RACDB1_lgwr_27890.trc-6096-*** 2016-05-10 13:28:41.481 RACDB1_lgwr_27890.trc-6097-Warning: log write elapsed time 654ms, size 16877KB RACDB1_lgwr_27890.trc:6098:kcrfw_update_adaptive_sync_mode: post->poll long#=2 sync#=9 sync=1031 poll=1961 rw=574 ack=0 min_sleep=1961 -- RACDB1_lgwr_27890.trc-6115-Warning: log write elapsed time 532ms, size 16479KB RACDB1_lgwr_27890.trc-6116- RACDB1_lgwr_27890.trc-6117-*** 2016-05-10 18:22:14.255 RACDB1_lgwr_27890.trc-6118-Warning: log write elapsed time 781ms, size 316KB RACDB1_lgwr_27890.trc:6119:kcrfw_update_adaptive_sync_mode: poll->post current_sched_delay=0 switch_sched_delay=1 current_sync_count_delta=2 switch_sync_count_delta=9 -- RACDB1_lgwr_27890.trc-6168-Warning: log write elapsed time 855ms, size 9153KB RACDB1_lgwr_27890.trc-6169- RACDB1_lgwr_27890.trc-6170-*** 2016-05-11 06:29:28.814 RACDB1_lgwr_27890.trc-6171-Warning: log write elapsed time 568ms, size 10345KB RACDB1_lgwr_27890.trc:6172:kcrfw_update_adaptive_sync_mode: post->poll long#=2 sync#=7 sync=964 poll=1961 rw=969 ack=0 min_sleep=1961

 

 

兩種模式的理解:(兩種模式主體都是前臺進程,post/wait是等待lgwr通知,polling是主動輪序lgwr)

Post/wait:用戶會話被動等待LGWR通知redo寫入到log file完畢,這種方式響應速度比較快。若cpu空閑時採用這種方式可以體驗到更好的響應時間。
Polling:用戶會話主動輪詢LGWR,觀測是否完成寫入(輪詢的間隔是10ms)。這種方式比Post/wait方式響應速度慢,但LGWR不直接把完成的消息通知到很多用戶會話,可以節約CPU資源。若cpu繁忙時採用這種方式可以降低cpu資源的消耗。

 

官方對兩種模式的解釋:

Adaptive Log File sync was introduced in 11.2. the feature is exactly enabled since release 11.2.0.3 , It’s enabled through an underscore parameter called _use_adaptive_log_file_sync and the description of this parameter is: adaptively switch between post/wait and polling.

Oracle can switches between the 2 methods:
Post/wait, traditional method for posting completion of writes to redo log

LGWR explicitly posts all processes waiting for the commit to complete.


The advantage of the post/wait method is that sessions should find out almost immediately when the redo has been flushed to disk.

Polling, a new method where the foreground process checks if the LGWR has completed the write.

Foreground processes sleep and poll to see if the commit is complete. The advantage of this new method is to free LGWR from having to inform many processes waiting on commit to complete thereby freeing high CPU usage by the LGWR.If post/wait is selected and the foreground processes fail to receive a post from LGWR, an incident is recorded.diagnostic traces are performed, and polling is used instead of post/wait.

Oracle uses semaphores extensively, If you look for references to “commit” in the Oracle docs, you’ll find the word “post” everywhere when they talk about communication between the foreground processes and LGWR. Now, remember that a COMMIT has two options: first, IMMEDIATE or BATCH and second, WAIT or NOWAIT. It looks like this to me:

Immediate: FG process will post to LGWR, triggering I/O (default)
Batch: FG process will not post LGWR
Wait: LGWR will post FG process when I/O is complete (default)
NoWait: LGWR will not post FG process when I/O is complete


參考:https://blog.csdn.net/rgb_rgb/article/details/72804143

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.netstat -nap | grep 埠號 2.第一種的可以查看埠號對應的pid,但是會出現pid為空的情況,這種時候用:lsof -i:埠號 3.根據pid查看埠號 netstat -nap | grep 進程pid 4.查看pid ps aux | grep 進程名 ps -ef ...
  • 環境: HelperA64開發板 Linux3.10內核 時間:2019.01.17 目標:PCF8563實時時鐘驅動的使用 問題:因為pcf8563的驅動是linux內核自帶的,網上也有很多分析的方法,之後再深入分析下pcf的驅動,寫驅動,得首先使用它。 1.以前各大廠商都會有自己的arm架構代碼 ...
  • 如果按照上一篇記錄的那樣,只有本公司的人或者自己才能使用驅動。想寫出一個通用的驅動程式,讓其他應用程式來無縫移植,需要使用現成的驅動——輸入子系統。 /drivers/input/input.c #define EV_SYN 0x00 //同步類#define EV_KEY 0x01 //按鍵類#d ...
  • 在學校里使用校園網,難免會受到限制,比如無論有線網路還是無線網路必須使用客戶端,輸入帳號密碼才行,博主的情況就是這樣,一直苦於Ubuntu 16.04無法連接有線網路,這次由於需要用,所以嘗試各種辦法解決了這個問題。 ...
  • 一 基礎準備 參考《002.Ceph安裝部署》文檔部署一個基礎集群。 二 擴展集群 2.1 擴展架構 需求:添加Ceph元數據伺服器node1。然後添加Ceph Monitor和Ceph Manager node2,node3以提高可靠性和可用性。 2.2 添加元數據(metadata)伺服器 提示 ...
  • 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <linux ...
  • 1 實驗拓撲 2 需求 RS 01和RS 02對外提供WEB服務。 RS 01搭建LAMP,PHP通過http模塊方式提供。 RS 02搭建LAMP,PHP通過fpm方式提供。 RS 01和RS 02之間的關係。 RS 01對外提供NFS服務,作為兩個LAMP環境的共用存儲,負責存儲用戶上傳的資源, ...
  • 一、線上操作規範 1.測試使用當初學習Linux的使用,從基礎到服務到集群,都是在虛擬機做的,雖然老師告訴我們跟真機沒有什麼差別,可是對真實環境的渴望日漸上升,不過虛擬機的各種快照卻讓我們養成了各種手賤的習慣,以致於拿到伺服器操作許可權時候,就迫不及待的想去試試。 記得上班第一天,老大把root密碼交 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...