SQL Server 2017錯誤日誌中出現“Parallel redo is shutdown for database 'xxx' with worker pool size [2]."淺析

来源:https://www.cnblogs.com/kerrycode/archive/2020/05/16/12899990.html
-Advertisement-
Play Games

在SQL Server 2017的錯誤日誌中出現"Parallel redo is started for database 'xxx' with worker pool size [2]"和“Parallel redo is shutdown for database 'xxx' with wor... ...


 

在SQL Server 2017的錯誤日誌中出現"Parallel redo is started for database 'xxx' with worker pool size [2]"和Parallel redo is shutdown for database 'xxx' with worker pool size [2].這種信息,這意味著什麼呢? 如下所示

 

 

Date     2020/5/16 11:07:38

Log      SQL Server (Current - 2020/5/16 11:08:00)

 

Source     spid33s

 

Message

Parallel redo is started for database 'YourSQLDba' with worker pool size [2].

 

 

Date     2020/5/16 11:07:38

Log      SQL Server (Current - 2020/5/16 11:08:00)

 

Source     spid33s

 

Message

Parallel redo is shutdown for database 'YourSQLDba' with worker pool size [2].

 

 

 

 

其實這個要涉及parallel redo這個概念,官方文檔有詳細介紹,摘抄部分如下【詳情請見參考資料】:

 

When availability group was initially released with SQL Server 2012, the transaction log redo was handled by a single redo thread for each database in an AG secondary replica. This redo model is also called as serial redo. In SQL Server 2016, the redo model was enhanced with multiple parallel redo worker threads per database to share the redo workload. In addition, each database has a new helper worker thread for handling the dirty page disk flush IO. This new redo model is called parallel redo. With the new parallel redo model that is the default setting since SQL Server 2016, workloads with highly concurrent small transactions are expected to achieve better redo performance. When the transaction redo operation is CPU intensive, such as when data encryption and/or data compression are enabled, parallel redo has even higher redo throughput (Redone Bytes/sec) compared to serial redo. Moreover, indirect checkpoint allows parallel redo to offload more disk IO (and IO waits for slow disk) to its helper worker thread and frees main redo thread to enumerate more received log records in secondary replica. It further speeds up the redo performance. However parallel redo, which enables multi-threading model, has an associated cost.

 

其實錯誤日誌中出現這些信息,這是在SQL Server 2017中添加的與可用性組的並行重做(Parallel redo)相關的信息性日誌消息。我們的SQL Server實例是單實例,並不是AG中的一個節點,怎麼會有parallel redo的信息呢? 其實資料庫沒有參與AG,所以在資料庫啟動的時候,該資料庫的parallel redo線程啟動,然後資料庫檢查發現並沒有可用性組。那麼就會關閉parallel redo的線程。

 

所以在資料庫實例重啟過後,你會在錯誤日誌看到Parallel redo is started for database 'xxxx' with worker pool size [2]. 這樣的輸出信息,然後立馬又會看到Parallel redo is shutdown for database 'xxxx' with worker pool size [2]..

 

其實呢,還有一種情況,就是你的用戶數據設置開啟了AUTO_CLOSE選項。如下所示,我將資料庫的YourSQLDba的AUTO_CLOSE開啟。

 

 

 
USE [master]
GO
ALTER DATABASE [YourSQLDba] SET AUTO_CLOSE ON WITH NO_WAIT
GO
 
 
 
SELECT   d.name                        AS database_name 
        ,SUSER_SNAME(owner_sid)        AS database_owner
        ,d.create_date                 AS create_date 
        ,d.collation_name              AS collcation_name 
        ,d.state_desc                  AS state_desc
        ,d.is_auto_close_on            AS is_auto_close_on
FROM    sys.databases d

 

如下所示,當會話訪問此資料庫,就會出現大量這樣的日誌信息。此時可以通過將資料庫AUTO_CLOSE選項關閉,就不會在錯誤日誌中出現大量這樣的信息,但是在SQL Server實例啟動的時候,你還是還是會看到這些日誌信息

 

clip_image001[6]

 

我們可以通過啟用跟蹤標記3459來關閉parallel redo這個功能。註意,這個跟蹤標記(trace flag)僅僅適用於SQL Server 2016/2017或更高的版本。建議在資料庫實例啟動時通過使用 -T 命令行選項來啟用全局跟蹤標誌。 這樣可確保跟蹤標誌在伺服器重新啟動後保持活動狀態。 若要讓跟蹤標誌生效,請重啟 SQL Server。

 

另外,註意關於parallel redo在特定版本有個Bug:FIX: Parallel redo does not work after you disable Trace Flag 3459 in an instance of SQL Server”,希望你不在測試過程中命中了這個Bug,否則會影響測試結果(具體版本信息,請閱讀參考資料的官方鏈接)

 

Assume that you use Always On Availability Groups in Microsoft SQL Server. After you switch to serial redo from parallel redo by enabling Trace Flag 3459, serial redo works as expected. However, when you switch back to parallel redo by disabling Trace Flag 3459, parallel redo does not work. If you restart the instance of SQL Server, parallel redo works as expected.

 

 

 

參考資料:

 

https://docs.microsoft.com/zh-cn/archive/blogs/sql_server_team/sql-server-20162017-availability-group-secondary-replica-redo-model-and-performance

https://dba.stackexchange.com/questions/239181/messages-about-parallel-redo

https://support.microsoft.com/en-us/help/4339858/fix-parallel-redo-does-not-work-after-you-disable-trace-flag-3459-in-a


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

-Advertisement-
Play Games
更多相關文章
  • 內核編譯步驟及模塊管理 設定內核參數的方法: echo VALUE > /proc/sys/TO/SOMEFILE sysctl -w kernel.hostname= 能立即生效,但無法永安有效。 永久有效需要修改配置文件/etc/syctl.conf 修改完配置文件不會理解生效,需要執行以下命令 ...
  • 內核中常用的分配物理記憶體頁面的介面函數是alloc_pages(),用於分配一個或者多個連續的物理頁面,分配頁面個數只能是2個整數次冪。相比於多次分配離散的物理頁面,分配連續的物理頁面有利於提高系統記憶體的碎片化,記憶體碎片化是一個很讓人頭疼的問題。alloc_pages()函數有兩個,一個是分配gfp ...
  • (1)先來先服務調度演算法(FCFS)(作業、進程調度):演算法簡單,但效率較低;有利於長作業,但對短作業不利,有利於CPU繁忙型作業,不利於I/O繁忙型作業。(2)短作業優先調度演算法(SJF)(作業):運行時間短的作業優先執行,該演算法對長作業不利,易造成“饑餓”問題,即長作業由於優先順序低可能長期得不到 ...
  • 好久沒更新博客了,今年整體行業不太樂觀,在朋友的引薦下進了新的東家討口飯吃,難得清靜下來一個周末,好吧,廢話不多說了, 今天更新了windows 的docker客戶端docker-toolbox, 發現原來的docker login -u 用戶名 -p 密碼 使用不了。這次更新的應該是最新版:htt ...
  • 一.安裝部署 "1.Zabbix部署" "2.Nessus簡介與安裝" "3.Ceph安裝" "4.Graylog 安裝" "5.Centos6.10 安裝Python 2.7.16" 更新中... 二.Linux運維 更新中... ...
  • BIOS 中英文對照表 轉載於https://www.dell.com/support/article/zh-cn/sln262122/bios-%E4%B8%AD%E8%8B%B1%E6%96%87%E5%AF%B9%E7%85%A7%E8%A1%A8?lang=zh 註意:機型不同 BIOS 版 ...
  • Redis 系列: 1. "Redis系列(一)Redis入門" 2. "Redis系列(二)Redis的8種數據類型" 3. "Redis系列(三)Redis的事務和Spring Boot整合" 4. "Redis系列(四)Redis配置文件和持久化" 5. "Redis系列(五)發佈訂閱模式、主 ...
  • 假設有一個用戶表 user,數據如下: 1、查詢表中 uid 重覆的數據 SELECT id, uid, name FROM USER WHERE uid IN (SELECT uid FROM USER GROUP BY uid HAVING COUNT(uid) > 1); 2、查詢表中重覆數據 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...