麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

sql server性能調優 I/O開銷的深入解析

2024-08-31 01:05:23
字體:
來源:轉載
供稿:網友

一.概述

IO 內存是sql server最重要的資源,數據從磁盤加載到內存,再從內存中緩存,輸出到應用端,在sql server 內存初探中有介紹。在明白了sqlserver內存原理后,就能更好的分析I/O開銷,從而提升數據庫的整體性能。 在生產環境下數據庫的sqlserver服務啟動后一個星期,就可以通過dmv來分析優化。在I/O分析這塊可以從物理I/O和內存I/O二方面來分析, 重點分析應在內存I/O上,可能從多個維度來分析,比如從sql server服務啟動以來 歷史I/O開銷總量分析,自執行計劃編譯以來執行次數總量分析,平均I/0次數分析等。

sys.dm_exec_query_stats:返回緩存的查詢計劃,緩存計劃中的每個查詢語句在該視圖中對應一行。當sql server工作負載過重時,該dmv也有可以統計不正確。如果sql server服務重啟緩存的數據將會清掉。這個dmv包括了太多的信息像內存掃描數,內存空間數,cpu耗時等,具體查看msdn文檔

sys.dm_exec_sql_text:返回的 SQL 文本批處理,它是由指定sql_handle,其中的text列是查詢的文本。

1.1 按照物理讀的頁面數排序 前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

如下圖所示:

  total_physical_reads:計劃自編譯后在執行期間所執行的物理讀取總次數。

  execution_count :計劃自上次編譯以來所執行的次數。

  [avg I/O]:    平均讀取的物理次數(頁數)。

  creation_time:編譯計劃的時間。

        query_text:執行計劃對應的sql腳本

       后面來包括所在的數據庫ID:dbid,數據庫名稱:dbname

sqlserver,性能調優,I/O

1.2 按照邏輯讀的頁面數排序 前50名

SELECT TOP 50 qs.total_logical_reads, qs.execution_count, qs.max_elapsed_time, qs.min_elapsed_time, qs.total_logical_reads/qs.execution_count AS [AVG IO], 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, creation_time, 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_logical_reads DESC

如下圖所示:

sqlserver,性能調優,I/O

通過上面的邏輯內存截圖來簡要分析下:

  從內存掃描總量上看最多的是8311268次頁掃描,自執行編譯后運行t-sql腳本358次,這里的耗時是毫秒為單位包括最大耗時和最小耗時,平均I/O是232115次(頁),該語句文本是一個update 修改,該表數據量大沒有完全走索引(權衡后不對該語句做索引覆蓋),但執行次數少,且每次執行時間是非工作時間,雖然掃描開銷大,但沒有影響白天客戶使用。

  從執行次數是有一個43188次, 內存掃描總量排名39位。該語句雖然只有815條,但執行次數很多,如里服務器有壓力可以優化,一般是該語句沒有走索引。把文本拿出來如下

SELECT Count(*) AS TotalCount FROM [MEM_FlagshipApply] WITH(NOLOCK) Where (((([Status] = 2) AND ([IsDeleted] = 1)) AND ([MemType] = 0)) AND ([MEMID] <> 6))

下面兩圖一個是分析該語句的執行計劃,sqlserver提示缺少索引,另一個是i/o統計掃描了80次。

sqlserver,性能調優,I/O

新建索引后在來看看

 CREATE NONCLUSTERED INDEX ix_1ON [dbo].[MEM_FlagshipApply] ([Status],[IsDeleted],[MemType],[MEMID])

sqlserver,性能調優,I/O  

sqlserver,性能調優,I/O     

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产妞干网 | 91精品久久久久久久久久久 | 91成人免费视频 | 国产人成免费爽爽爽视频 | 欧美性色生活片免费播放 | 久久久久久久久久综合 | 国产在线免| 欧美日韩一 | 久久久久国产一区二区三区不卡 | 精品成人国产在线观看男人呻吟 | 亚洲精品a级 | 午夜精品福利影院 | 国产午夜精品一区 | 午夜精品福利视频 | 91久久国产综合久久91精品网站 | 欧洲精品色 | 亚洲日本韩国在线观看 | 高清中文字幕在线 | 久久草在线视频国产 | 欧美 日韩 三区 | 久久一本日日摸夜夜添 | 久章草影院 | 国产精品久久久久久久av | 日日狠狠久久偷偷四色综合免费 | 国产精品视频yy9299一区 | 欧美中文字幕一区二区 | 一区二区久久精品66国产精品 | 久久sp| 久久久久久久久久久久久久av | 国产激情视频在线 | 久久精品黄 | 国产高清自拍一区 | 久久久在线 | 轻点插视频 | 国产无遮挡一级毛片 | 国产一级毛片国产 | 欧美亚成人 | 欧美a∨亚洲欧美亚洲 | 国产成人在线免费观看视频 | 一级免费看片 | 91久久久久久久久久久久久久 |