狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQLServer運維實用的幾個腳本

admin
2024年9月3日 18:48 本文熱度 777


1、查詢出最近所有耗時最大的SQL語句

返回的是未關聯任何特定對象的最耗費資源的查詢信息,包括查詢的執行SQL、最后一次執行的總耗時、所有執行的總耗時、執行最小耗時、執行最大耗時、執行次數、計劃生成次數、所有執行期間總共讀取和寫的物理磁盤次數以及邏輯磁盤次數等信息。

SELECT s2.dbid,

       s1.sql_handle,

 (

 SELECT TOP 1

                  SUBSTRING(   s2.text,

                               statement_start_offset / 2 + 1,

 ((CASE

 WHEN statement_end_offset = -1 THEN

 (LEN(CONVERT(NVARCHAR(MAX), s2.text)) * 2)

 ELSE

                                         statement_end_offset

 END

 ) - statement_start_offset

 ) / 2 + 1

 )

 ) AS 執行SQL,

       last_worker_time '最后執行總耗時(毫秒)',

       last_execution_time '最后執行時間',

       total_worker_time '所有執行總耗時(毫秒)',

       min_worker_time '執行最小耗時(毫秒)',

       max_worker_time '執行最大耗時(毫秒)',

       execution_count,

       plan_generation_num,

       total_physical_reads,

       last_physical_reads,

       min_physical_reads,

       max_physical_reads,

       total_logical_writes,

       last_logical_writes,

       min_logical_writes,

       max_logical_writes

FROM sys.dm_exec_query_stats AS s1

 CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS s2

WHERE s2.objectid IS NULL

ORDER BY last_worker_time DESC,

         s1.sql_handle,

         s1.statement_start_offset,

         s1.statement_end_offset;


說明:

列名
描述
s2.dbid
執行查詢的數據庫ID
s1.sql_handle
SQL語句的唯一標識符
執行SQL
通過sys.dm_exec_sql_text獲取的SQL語句文本
last_worker_time
上一次執行查詢所花費的總CPU時間(毫秒)
last_execution_time
查詢最后一次執行的時間
total_worker_time
所有執行查詢所花費的總CPU時間(毫秒)
min_worker_time
任何單次執行查詢所花費的最少CPU時間(毫秒)
max_worker_time
任何單次執行查詢所花費的最大CPU時間(毫秒)
execution_count
查詢被執行的次數
plan_generation_num
計劃生成次數
total_physical_reads
所有執行期間總共讀取的物理磁盤次數
last_physical_reads
上一次執行期間讀取的物理磁盤次數
min_physical_reads
任何單次執行期間最少讀取的物理磁盤次數
max_physical_reads
任何單次執行期間最多讀取的物理磁盤次數
total_logical_writes
所有執行期間總共寫的邏輯磁盤次數
last_logical_writes
上一次執行期間寫的邏輯磁盤次數
min_logical_writes
任何單次執行期間最少寫的邏輯磁盤次數
max_logical_writes
任何單次執行期間最多的邏輯磁盤次數

 sys.dm_exec_query_stats AS s1:SQL Server中的系統視圖,提供了關于查詢統計信息,例如CPU時間、讀取次數和寫入次數等。

 CROSS APPLY sys.dm_exec_sql_text(s1.sql_handle) AS s2:使用CROSS APPLY運算符將s1.sql_handle傳遞給s2,以便從sys.dm_exec_sql_text視圖中檢索實際的SQL文本


2、查詢數據庫每個數據表存儲占用

查詢指定數據庫的記錄數、總工占用空間KB、總共占用空間MB、已使用空間KB、已使用空間MB、未使用空間KB、未使用空間MB,這對于分析磁盤占用非常有用。

SELECT

 t.NAME AS 表名,

 s.Name AS 架構,

 p.rows AS 記錄數,

 SUM ( a.total_pages ) * 8 AS 總工占用空間KB,

 CAST ( ROUND( ( ( SUM ( a.total_pages ) * 8 ) / 1024.00 ), 2 ) AS NUMERIC ( 36, 2 ) ) AS 總共占用空間MB,

 SUM ( a.used_pages ) * 8 AS 已使用空間KB,

 CAST ( ROUND( ( ( SUM ( a.used_pages ) * 8 ) / 1024.00 ), 2 ) AS NUMERIC ( 36, 2 ) ) AS 已使用空間MB,

 ( SUM ( a.total_pages ) - SUM ( a.used_pages ) ) * 8 AS 未使用空間KB,

 CAST (

 ROUND( ( ( SUM ( a.total_pages ) - SUM ( a.used_pages ) ) * 8 ) / 1024.00, 2 ) AS NUMERIC ( 36, 2 ) 

 ) AS 未使用空間MB 

FROM sys.tables t

INNER JOIN sys.indexes i ON t.OBJECT_ID = i.object_id

INNER JOIN sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id

INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id

LEFT OUTER JOIN sys.schemas s ON t.schema_id = s.schema_id 

WHERE t.NAME NOT LIKE 'dt%' AND t.is_ms_shipped = 0 AND i.OBJECT_ID > 0 

GROUP BY t.Name,s.Name,p.Rows 

ORDER BY 總共占用空間MB DESC;



3、當前正在執行的最耗時的前10個SQL語句

該語句適合排查生產環境實時SQL語句慢的情況。

SELECT TOP 10 

    r.session_id,

    r.request_id,

    r.start_time AS '開始時間',

    r.status AS '狀態',

    r.command AS '命令',

    t.text AS 'sql語句',

    DB_NAME(r.database_id) AS '數據庫名',

    r.blocking_session_id AS '正在阻塞其他會話的會話ID',

    w.wait_type AS '等待資源類型',

    r.wait_time AS '等待時間',

    r.wait_resource AS '等待的資源',

    w.waiting_tasks_count AS '當前正在進行等待的任務數',

    r.reads AS '物理讀次數',

    r.writes AS '寫次數',

    r.logical_reads AS '邏輯讀次數',

    r.row_count AS '返回結果行數'

FROM sys.dm_exec_requests AS r

CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t

LEFT JOIN sys.dm_os_wait_stats AS w ON r.wait_type = w.wait_type

WHERE r.session_id > 50 -- 排除系統進程

ORDER BY r.cpu_time DESC;


注意:sys.dm_exec_requests僅包含當前活動的會話信息,獲取過去一段時間內已經完成的慢查詢,可以使用擴展事件(XEvents)來記錄長時間運行的查詢,并將這些信息寫入一個跟蹤文件,然后分析這些文件來找出歷史某個時間段的慢查詢。


4、SQLServer查看鎖表和解鎖

如果遇到數據庫鎖表的情況,可以通過sql語句拿到鎖表進程id,然后執行殺掉進程語句,解決數據庫卡死的情況。

-- 第一步查詢被鎖表

select request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   

from   sys.dm_tran_locks where resource_type='OBJECT';

--參數說明 spid   鎖表進程 ;tableName   被鎖表名

-- 第二步解鎖語句 需要拿到spid然后殺掉縮表進程

declare @spid  int 

Set @spid  = 57 --鎖表進程

declare @sql varchar(1000)

set @sql='kill '+cast(@spid  as varchar)

exec(@sql)


5、快速清理數據庫日志文件

數據庫日志文件隨著業務系統的長期使用會非常占用存儲空間,甚至占用超過幾百G甚至上T,如果不需要進行一直保留數據庫日志文件,可以建一個數據庫作業,定時清理數據庫日志文件,腳本如下:

USE master

ALTER DATABASE DB SET RECOVERY SIMPLE WITH NO_WAIT

ALTER DATABASE DB SET RECOVERY SIMPLE --調整為簡單模式

USE DB

DBCC SHRINKFILE (N'DB_log' , 2, TRUNCATEONLY) --設置壓縮后的日志大小為2M,可以自行指定

USE master

ALTER DATABASE DB SET RECOVERY FULL WITH NO_WAIT

ALTER DATABASE DB SET RECOVERY FULL --還原為完全模式


該文章在 2024/9/4 15:48:55 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved