SQL Server 查找統計信息的相關採樣信息

来源:https://www.cnblogs.com/kerrycode/archive/2019/02/18/10396407.html
-Advertisement-
Play Games

SQL Server 查找統計信息的相關採樣信息 有時候我們會遇到,由於統計信息不准確導致優化器生成了一個錯誤的執行計劃(或者這樣表達:一個較差的執行計劃),從而引起了系統性能問題。那麼如果我們懷疑這個錯誤的執行計劃是由於統計信息不准確引起的。那麼我們如何判斷統計信息不准確呢?當然首先得去查看實際執... ...


SQL Server 查找統計信息的相關採樣信息

 

有時候我們會遇到,由於統計信息不准確導致優化器生成了一個錯誤的執行計劃(或者這樣表達:一個較差的執行計劃),從而引起了系統性能問題。那麼如果我們懷疑這個錯誤的執行計劃是由於統計信息不准確引起的。那麼我們如何判斷統計信息不准確呢?當然首先得去查看實際執行計劃中,統計信息的相關數據是否與實際情況有較大的出入,下麵我們拋開這個大命題,僅僅從統計信息層面去查看統計信息的更新時間,統計信息的採樣行數等情況。

 

1:首先,我們要查查統計信息是什麼時候更新的。

 

2:其次,我們查看統計信息的採樣信息:採樣選取的行數、自上次更新統計信息以來前導統計信息列(構建直方圖的列)的總修改次數。。。 

 

查看統計信息的最後更新時間。

 

方法1:

 

--查看統計信息的更新時間
DECLARE @TableName NVARCHAR(128);
SET @TableName = 'dbo.pbCutClothCost';
SELECT  @TableName  AS Table_Name,
        name AS Stats_Name ,
        STATS_DATE(object_id, stats_id) AS Last_Stats_Update
FROM    sys.stats
WHERE   object_id = OBJECT_ID(@TableName)
ORDER BY 2 DESC;

 

 

 

clip_image001

 

 

如上所示,我們通過這個腳本查看某個表,所有的統計信息最後一次更新時間。如果你需要查看某個具體的統計信息的最後更新時間,那麼在這個SQL的基礎上增加相關查詢條件即可。

 

方法2:

 

 

--查看統計信息的更新時間

EXEC sp_autostats 'dbo.pbCutClothCost';

 

 

方法3:

 

還有一種方法可以通過 sys.dm_db_stats_properties 返回統計信息的更新時間,不過這個DMF只有SQL Server 2008 R2 SP2這個版本之後的才有。

 

列名

數據類型

Description

object_id

int

要返回統計信息對象屬性的對象(表或索引視圖)的 ID

stats_id

int

統計信息對象的 ID 在表或索引視圖中是唯一的。 有關詳細信息,請參閱 sys.stats (Transact-SQL)

last_updated

datetime2

上次更新統計信息對象的日期和時間。 有關詳細信息,請參閱此頁中的備註部分。

rows

bigint

上次更新統計信息時表或索引視圖中的總行數。 如果篩選統計信息或者統計信息與篩選索引對應,該行數可能小於表中的行數。

rows_sampled

bigint

用於統計信息計算的抽樣總行數。

Step

int

直方圖中的值範圍數(步長)(Number of steps in the histogram)。 有關詳細信息,請參閱 DBCC SHOW_STATISTICS (Transact-SQL)

unfiltered_rows

bigint

應用篩選表達式(用於篩選的統計信息)之前表中的總行數。 如果未篩選統計信息,則 unfiltered_rows 等於行列中返回的值。

modification_counter

bigint

自上次更新統計信息以來前導統計信息列(構建直方圖的列)的總修改次數。

記憶體優化表: 正在啟動SQL Server 2016 (13.x)併在Azure SQL Database此列包含: 修改因為最後一個時間統計信息已更新或重新啟動資料庫的表的總次數。

persisted_sample_percent

float

持久樣本百分比用於未顯式指定採樣百分比的統計信息更新。 如果值為零,則不為此統計信息設置持久樣本百分比。

適用範圍:SQL Server 2016 (13.x)
 
SP1 CU4

 

 

 

查看採樣的相關信息

 

 

 

SELECT sch.name + '.' + so.name AS table_name
      , so.object_id
      , ss.name  AS stat_name
      , ds.stats_id
      , ds.last_updated
      , ds.rows
      , ds.rows_sampled
      , ds.steps
	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習性能優化的第一步,一定要瞭解性能指標。 性能指標是什麼? 當我們看到性能指標時一定先想到“高併發”、“響應快”,這個兩個指標也對應著性能優化的兩個核心指標—— “吞吐率”和“低延遲”。 這兩個指標是從應用角度來考察性能,直接影響產品終端用戶體驗,跟它對應的是從系統資源角度的角度來考察性能,比如: ...
  • 1、解壓 將mongodb linux x86_64 suse12 4.0.6.tgz複製到/usr/local/mongodb目錄 2、修改環境變數 3、創建基本目錄結構 4、進入到bin目錄,增加一個配置文件 插入下列內容: 5、 使用supervisor守護mongodb進程 添加以下內容: ...
  • 1、安裝 libicu 依賴 1、線上安裝 顯示如下信息表示成功 2、離線安裝 將文件aspnetcore runtime 2.2.1 linux x64.tar.gz複製到 /usr/local/dotnet 3、添加環境變數 這個時候能看到所有的環境變數,找打並複製PATH一行,大概是下麵這樣。 ...
  • Ubuntu下多次重裝MySQL,可以完全卸載後再安裝,本文將結束MySQL的安裝與卸載方法。 ...
  • 主要涉及到以下關鍵字: K8S、Docker、微服務、安裝、教程、網路、日誌、存儲、安全、工具、CI/CD、分散式、實踐、架構等; 以下盤點2018年一些精選優質文章! 漫畫形式: 漫畫:小黃人學 Service Mesh 之 Istio漫畫:Kubernetes中的ConfigMap和Secret ...
  • 開始之前給大家出個問題,資料庫表test中兩個欄位 a int(2),b int(3),現在想執行下麵的插入語句 思考是否可以插入? 答案是能插入 再看下麵的語句 思考能不能插入?註意第一個數字多了一位變成了11位 資料庫會報如下錯誤 “Out of range value for column ' ...
  • 轉自:https://blog.csdn.net/e_wsq/article/details/7561209 步驟: 1.建立一個臨時varchar2欄位用來保存數據 2.將clob的內容截取後更新到varchar2欄位中 update table_wonder set tempcolumn = d ...
  • 複製數據表 刪除表中某個欄位 查看表結構 未完待續...... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...