時(shí)間:2024-02-28 13:28作者:下載吧人氣:18
一.概述
IO 內(nèi)存是sql server最重要的資源,數(shù)據(jù)從磁盤加載到內(nèi)存,再?gòu)膬?nèi)存中緩存,輸出到應(yīng)用端,在sql server 內(nèi)存初探中有介紹。在明白了sqlserver內(nèi)存原理后,就能更好的分析I/O開銷,從而提升數(shù)據(jù)庫(kù)的整體性能。 在生產(chǎn)環(huán)境下數(shù)據(jù)庫(kù)的sqlserver服務(wù)啟動(dòng)后一個(gè)星期,就可以通過dmv來分析優(yōu)化。在I/O分析這塊可以從物理I/O和內(nèi)存I/O二方面來分析, 重點(diǎn)分析應(yīng)在內(nèi)存I/O上,可能從多個(gè)維度來分析,比如從sql server服務(wù)啟動(dòng)以來 歷史I/O開銷總量分析,自執(zhí)行計(jì)劃編譯以來執(zhí)行次數(shù)總量分析,平均I/0次數(shù)分析等。
sys.dm_exec_query_stats:返回緩存的查詢計(jì)劃,緩存計(jì)劃中的每個(gè)查詢語句在該視圖中對(duì)應(yīng)一行。當(dāng)sql server工作負(fù)載過重時(shí),該dmv也有可以統(tǒng)計(jì)不正確。如果sql server服務(wù)重啟緩存的數(shù)據(jù)將會(huì)清掉。這個(gè)dmv包括了太多的信息像內(nèi)存掃描數(shù),內(nèi)存空間數(shù),cpu耗時(shí)等,具體查看msdn文檔。
sys.dm_exec_sql_text:返回的 SQL 文本批處理,它是由指定sql_handle,其中的text列是查詢的文本。
1.1 按照物理讀的頁面數(shù)排序 前50名
SELECT TOP 50
qs.total_physical_reads,qs.execution_count,
qs.total_physical_reads/qs.execution_count AS [avg I/O],
qs. creation_time,
qs.max_elapsed_time,
qs.min_elapsed_time,
SUBSTRING(qt.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset=-1
THEN LEN(CONVERT(NVARCHAR(max),qt.text))*2
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2) AS query_text,
qt.dbid,dbname=DB_NAME(qt.dbid),
qt.objectid,
qs.sql_handle,
qs.plan_handle
from sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qs.total_physical_reads DESC
網(wǎng)友評(píng)論