SQLSERVER收集語句運行的統計信息并進行分析建站
導讀:1建站知識例如語句的編譯時間、執行時間、做了多少次磁盤讀等,如果DBA能夠把問題語句單獨測試運行,可以在運行前打開下面如何seo優化推廣網站百度seo網站優化。
對于語句的運行,除了執行計劃本身,還有一些其他因素要考慮,例如語句的編譯時間、執行時間、做了多少次磁盤讀等。如果DBA能夠把問題語句單獨測試運行,可以在運行前打開下面這三個開關,收集語句運行的統計信息。 這些信息對分析問題很有價值。
復制代碼 代碼如下:
SET STATISTICS TIME ON SET STATISTICS IO ON SET STATISTICS PROFILE ON
SET STATISTICS TIME ON -------------------------------------------------------------------------------- 請先來看看SET STATISTICS TIME ON會返回什么信息。先運行語句:復制代碼 代碼如下:
DBCC DROPCLEANBUFFERS --清除buffer pool里的所有緩存數據 DBCC freeproccache GO --清除buffer pool里的所有緩存的執行計劃 SET STATISTICS TIME ON GO USE [AdventureWorks] GO SELECT DISTINCT([ProductID]),[UnitPrice] FROM [dbo].[SalesOrderDetail_test] WHERE [ProductID]=777 GO SET STATISTICS TIME OFF GO
除了結果集之外,SQLSERVER還會返回下面這兩段信息復制代碼 代碼如下:
SQL Server 分析和編譯時間: CPU 營銷型網站建設時間 = 15 毫秒,占用時間 = 104 毫秒。 SQL Server 分析和編譯時間: CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。 (4 行受影響) SQL Server 執行時間: CPU 時間 = 171 毫秒,占用時間 = 1903 毫秒。 SQL Server 分析和編譯時間: CPU 時間 = 0 毫秒,占用時間 = 0 毫秒。
大家知道SQLSERVER執行語句是分以下階段:分析-》編譯-》執行 根據表格的統計信息分析出比較合適的執行計劃,然后編譯語句,最后執行語句下面說一下上面的輸出是什么意思: -------------------------------------------------------------------------------- 1、CPU時間 :這個值的含義指的是在這一步,SQLSERVER所花的純CPU時間是多少。也就是說,語句花了多少CPU資源 2、占用時間 :此值指這一步一共用了多少時間。也就是說,這是語句運行的時間長短,有些動作會發生I/O操作,產生了I/O等待,或者是遇到阻塞、產生了阻塞等待。總之時間用掉了,但是沒有用CPU資源。所以占用時間比CPU時間長是很正常的 ,但是CPU時間是語句在所有CPU上的時間總和。如果語句使用了多顆CPU,而其他等待幾乎沒有,那么CPU時間大于占用時間也是正常的 3、分析和編譯時間:這一步,就是語句的編譯時間。由于語句運行之前清空了所有執行計劃,SQLSERVER必須要對他編譯。 這里的編譯時間就不為0了。由于編譯主要是CPU的運算,所以一般CPU時間和占用時間是差不多的。如果這里相差比較大,就有必要看看SQLSERVER在系統資源上有沒有瓶頸了。 這里他們是一個15毫秒,一個是104毫秒 4、SQLSERVER執行時間: 語句真正運行的時間。由于語句是第一次運行,SQLSERVER需要把數據從磁盤讀到內存里,這里語句的運行發生了比較長的I/O等待。所以這里的CPU時間和占用時間差別就很大了,一個是171毫秒,而另一個是1903毫秒 總的來講,這條語句花了104+1903+186=2193毫秒,其中CPU時間為15+171=186毫秒。語句的主要時間應該是都花在了I/O等待上 現在再做一遍語句,但是不清除任何緩存聲明: 本文由我的SEOUC技術文章主頁發布于:2023-05-23 ,文章SQLSERVER收集語句運行的統計信息并進行分析建站主要講述統計信息,進行分析,SQL網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_6174.html