最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sql server性能調(diào)優(yōu) I/O開銷的深入解析

 更新時(shí)間:2018年07月03日 14:59:30   作者:花陰偷移  
這篇文章主要給大家介紹了關(guān)于sql server性能調(diào)優(yōu) I/O開銷的相關(guān)資料,文中通過示例代碼以及圖片介紹的非常詳細(xì),對大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一.概述

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

sys.dm_exec_query_stats:返回緩存的查詢計(jì)劃,緩存計(jì)劃中的每個(gè)查詢語句在該視圖中對應(yīng)一行。當(dāng)sql server工作負(fù)載過重時(shí),該dmv也有可以統(tǒng)計(jì)不正確。如果sql server服務(wù)重啟緩存的數(shù)據(jù)將會清掉。這個(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

如下圖所示:

  total_physical_reads:計(jì)劃自編譯后在執(zhí)行期間所執(zhí)行的物理讀取總次數(shù)。

  execution_count :計(jì)劃自上次編譯以來所執(zhí)行的次數(shù)。

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

  creation_time:編譯計(jì)劃的時(shí)間。

        query_text:執(zhí)行計(jì)劃對應(yīng)的sql腳本

       后面來包括所在的數(shù)據(jù)庫ID:dbid,數(shù)據(jù)庫名稱:dbname

1.2 按照邏輯讀的頁面數(shù)排序 前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

如下圖所示:

通過上面的邏輯內(nèi)存截圖來簡要分析下:

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

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

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

下面兩圖一個(gè)是分析該語句的執(zhí)行計(jì)劃,sqlserver提示缺少索引,另一個(gè)是i/o統(tǒng)計(jì)掃描了80次。

新建索引后在來看看

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

  

     

總結(jié)

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

相關(guān)文章

最新評論

嵊泗县| 孟津县| 方正县| 嘉峪关市| 平邑县| 堆龙德庆县| 晋江市| 乐至县| 锡林浩特市| 东宁县| 沈丘县| 沙坪坝区| 渝北区| 长子县| 竹溪县| 安龙县| 长武县| 合山市| 南江县| 怀远县| 静安区| 巍山| 平乡县| 齐齐哈尔市| 米泉市| 西宁市| 罗田县| 永定县| 泗水县| 灌南县| 吐鲁番市| 苏尼特左旗| 得荣县| 庆城县| 马山县| 怀仁县| 双鸭山市| 皋兰县| 株洲县| 宁蒗| 永春县|