sqlserver資料庫日常巡檢規範之上篇,值得收藏

波波說運維 發佈 2020-05-19T01:19:49+00:00

對某個資料庫,顯示目錄視圖中的頁數和行數錯誤並更正。--可以@updateusage = 'true',會運行dbcc updateusage。

概述

資料庫巡檢是資料庫管理員保證資料庫健康的必要維護項,全面的巡檢可以及早的發現問題、解決問題、預防問題。今天主要分享一下sqlserver的一些巡檢內容,僅供參考。


一、資料庫空間及狀態檢查

1、所有資料庫的大小

 use dbname  
 go  
 exec sp_spaceused    
 go  

2、所有資料庫的狀態

select name,  
       user_access_desc, --用戶訪問模式  
       state_desc, --資料庫狀態  
       recovery_model_desc, --恢復模式  
       page_verify_option_desc, --頁檢測選項  
       log_reuse_wait_desc --日誌重用等待  
from sys.databases ;

3、某個資料庫的大小

按頁面計算空間,有性能影響,基本準確,有時不準確

use dbname  
go  
exec sp_spaceused    
go  



4、對某個資料庫,顯示目錄視圖中的頁數和行數錯誤並更正

--可以@updateusage = 'true',會運行dbcc updateusage  
exec sp_spaceused @updateusage = 'true'  
--顯示目錄視圖中的頁數和行數錯誤並更正  
DBCC UPDATEUSAGE('test')  



二、數據文件檢查

1、查看某個資料庫中的所有文件及大小

sp_helpfile   


2、查看所有文件所在資料庫、路徑、狀態、大小

select db_name(database_id) dbname,  
       type_desc, --數據還是日誌  
       name, --文件的邏輯名稱  
       physical_name, --文件的物理路徑  
       state_desc, --文件狀態  
       size * 8.0/1024 as '文件大小(MB)'          
from sys.master_files 

3、按區extent計算空間,沒有性能影響,基本準確

這裡把TotalExtents*64/1024,單位為MB,同時也適用於計算tempdb的文件大小,但不包括日誌文件

dbcc showfilestats  



三、日誌文件檢查

1、查看日誌文件所在資料庫、路徑、狀態、大小

select db_name(database_id) dbname,  
       type_desc, --數據還是日誌  
       name, --文件的邏輯名稱  
       physical_name, --文件的物理路徑  
       state_desc, --文件狀態  
       size * 8.0/1024 as '文件大小(MB)'          
from sys.master_files  
where type_desc = 'LOG'  


2、所有資料庫的日誌的大小,空間使用率

 dbcc sqlperf(logspace)  



四、數據文件、日誌文件的I/O統計信息

1、數據和日誌文件的I/O統計信息,包含文件大小

select database_id,  
           file_id,  
           file_handle, --windows文件句柄  
           sample_ms, --自從計算機啟動以來的毫秒數 
           num_of_reads,  
           num_of_bytes_read,  
           io_stall_read_ms, --等待讀取的時間  
           num_of_writes,  
           num_of_bytes_written,  
           io_stall_write_ms,  
           io_stall, --用戶等待文件完成I/O操作所用的總時間  
           size_on_disk_bytes --文件在磁碟上所占用的實際字節數       
    from sys.dm_io_virtual_file_stats(db_id('test'), --資料庫id  
                                       1 ) --數據文件id                                         
    union all  
    select database_id,  
           file_id,  
           file_handle, --windows文件句柄  
           sample_ms, --自從計算機啟動以來的毫秒數  
           num_of_reads,  
           num_of_bytes_read,  
           io_stall_read_ms, --等待讀取的時間  
           num_of_writes,  
           num_of_bytes_written,  
           io_stall_write_ms,  
           io_stall, --用戶等待文件完成I/O操作所用的總時間  
           size_on_disk_bytes --文件在磁碟上所占用的實際字節數   
    from sys.dm_io_virtual_file_stats( db_id('test'), --資料庫id  
                                       2 ) --日誌文件id  



篇幅有限,所以就分成兩部分做介紹了~

覺得有用的朋友多幫忙轉發哦!

後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~


關鍵字: