達夢資料庫執行緒簡單介紹

始於腳下發表於2020-09-30

達夢資料庫與執行緒管理相關的動態效能檢視主要有V$THREADS、V$PROCESS、V$LATCHES、V$WTHRD_HISTORY。以下我們以dm8資料庫為測試環境,通過動態效能檢視V$THREADS、V$PROCESS來認識達夢資料庫執行緒管理內容。

Ø   V$THREADS 達夢資料庫當前活動執行緒的資訊

可以看到當前環境有49個執行緒,我們按執行緒類別進行分類統計:

達夢資料庫執行緒簡單介紹       從結果我們可以看到,有 15 個類別的執行緒,我們可以對這 15 個型別的執行緒,從大方面分為兩類:系統後臺執行緒與使用者執行緒。

系統後臺執行緒:

dm_quit_thd :用於執行正常關閉資料庫的執行緒。

dm_io_thd :IO執行緒,由IO_THR_GROUPS引數控制,預設為2個執行緒,如下我們可以從系統中獲得證明。

達夢資料庫執行緒簡單介紹

dm_rsyswrk_thd :非同步歸檔執行緒,屬於歸檔執行緒,主要負責將任務佇列中的任務,按照歸檔型別進行相應的歸檔處理,一般有日誌flushh執行緒觸發。

dm_chkpnt_thd :檢查點執行緒,主要負責CKPT_LSN的管理。

dm_redolog_thd :日誌flush執行緒,負責日誌刷盤,當事物提交或者發生檢查點是觸發。

dm_hio_thd :IO執行緒,主要處理HFS相關的IO讀取操作,比如HUGE表的IO讀取就有該執行緒負責完成。

dm_sqllog_thd :Thread for writing dmsql dmserver。

dm_purge_thd :purge執行緒。主要負責回滾段清理。

dm_tskwrk_thd :任務執行緒,由引數TASK_THREADS控制,取值範圍為1-1000,預設為16,主要負責完成服務端SQL的解析執行等任務。

dm_trctsk_thd :日誌資訊記錄執行緒,主要負責資料庫告警跟蹤資訊寫入告警日誌檔案中。

dm_wrkgrp_thd :工作執行緒,由引數WORKER_THREADS控制,取值範圍為1-64,預設值為16,主要負責所有實際的資料相關操作。

dm_audit_thd :審計執行緒,主要負責審計日誌記錄與更新。

dm_sched_thd :排程執行緒,每秒鐘輪詢一次,主要負責接管資料庫內部所有需要定時排程的任務,排程執行緒具備喚醒工作執行緒、向任務佇列中新增任務佇列、動態緩衝區檢查、SQL快取清理等許可權。

dm_lsnr_thd :監聽執行緒。主要負責資料庫伺服器埠監聽,處理客戶端請求,並將連線請求加入到工作執行緒的任務佇列,由工作執行緒完成任務處理。監聽執行緒在資料庫服務啟動完成之後才啟動,關閉資料庫時首先被關閉。

       使用者執行緒:

dm_sql_thd :使用者執行緒。一般通過客戶端連線的執行緒都是屬於這個類別,也就是說,可以通過select count(*) from v$threads where name = 'dm_sql_thd';語句來檢視資料庫當前活動數量。

通過v$threads執行緒的id列關聯v$sessions的thrd_id列,來檢視具體執行緒的詳細資訊。

Ø   V$PROCESS 顯示當前程式資訊

我們先看看v$porcess中的內容:

達夢資料庫執行緒簡單介紹

可以看到只有一條記錄,而pid列的程式號就是對應的伺服器上達夢服務的程式號,從這裡結合V$THREADS中的記錄數,可以看出,達夢資料庫的程式(執行緒)是單程式多執行緒的結構。

總結

1 、達夢資料庫採用的是單程式、多執行緒的對稱伺服器架構。

2 、達夢資料庫內部是通過多個後臺執行緒互相協調完成任務處理的,執行緒之間通過一定的同步機制對資料結構進行併發訪問和處理。

3 、達夢資料庫採用的是共享服務模式。

由於本次測試環境的限制,僅能看到達夢資料庫中的部分執行緒型別,還有很多型別的執行緒無法在此陳列,比如日誌apply執行緒、定時器執行緒、MAL相關的執行緒等。對於達夢資料庫執行緒的詳細介紹,使用者可以檢視官方文件-《DM8系統管理員手冊》第四章節管理DM執行緒的內容,此處拋磚引玉,提供一種由內向外學習達夢資料庫技術的思路。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31403259/viewspace-2725208/,如需轉載,請註明出處,否則將追究法律責任。

相關文章