1. 程式人生 > >sql優化之(DMV)

sql優化之(DMV)

Microsoft SQL Server 2005 提供了一些工具來監控資料庫。方法之一是動態管理檢視。動態管理檢視 (DMV) 和動態管理函式 (DMF) 返回的伺服器狀態資訊可用於監控伺服器例項的執行狀況、診斷問題和優化效能。

常規伺服器動態管理物件包括:

  • dm_db_*:資料庫和資料庫物件

  • dm_exec_*:執行使用者程式碼和關聯的連線

  • dm_os_*:記憶體、鎖定和時間安排

  • dm_tran_*:事務和隔離

  • dm_io_*:網路和磁碟的輸入/輸出

此部分介紹為監控 SQL Server 執行狀況而針對這些動態管理檢視和函式執行的一些常用查詢。


摘錄部分精彩SQL如下:

下面的查詢顯示 CPU 平均佔用率最高的前 50 個 SQL 語句。

SELECTTOP50
total_worker_time
/execution_count AS[Avg CPU Time],
(
SELECTSUBSTRING(text,statement_start_offset/2,(CASEWHEN statement_end_offset =-1thenLEN(CONVERT(nvarchar(max), text)) *2ELSE statement_end_offset end-statement_start_offset)/2FROM sys.dm_exec_sql_text(sql_handle)) 
AS query_text, *FROM sys.dm_exec_query_stats 
ORDERBY[Avg CPU Time]DESC


下面的查詢顯示一些可能佔用大量 CPU 使用率的運算子(例如 ‘%Hash Match%’、‘%Sort%’)以找出可疑物件。

複製程式碼 select*from 
      sys.dm_exec_cached_plans
      
cross apply sys.dm_exec_query_plan(plan_handle)
wherecast(query_plan asnvarchar(max)) like'%Sort%'orcast(query_plan 
asnvarchar(max)) like'%Hash Match%' 複製程式碼


執行下面的 DMV 查詢以檢視 CPU、計劃程式記憶體和緩衝池資訊。

複製程式碼 select 
cpu_count,
hyperthread_ratio,
scheduler_count,
physical_memory_in_bytes 
/1024/1024as physical_memory_mb,
virtual_memory_in_bytes 
/1024/1024as virtual_memory_mb,
bpool_committed 
*8/1024as bpool_committed_mb,
bpool_commit_target 
*8/1024as bpool_target_mb,
bpool_visible 
*8/1024as bpool_visible_mb
from sys.dm_os_sys_info 複製程式碼


下面的示例查詢顯示已重新編譯的前 25 個儲存過程。plan_generation_num 指示該查詢已重新編譯的次數。

複製程式碼 selecttop25
sql_text.
text,
sql_handle,
plan_generation_num,
execution_count,
dbid,
objectid 
from sys.dm_exec_query_stats a
cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
where plan_generation_num >1orderby plan_generation_num desc 複製程式碼


下面的 DMV 查詢可用於查詢哪些批處理/請求生成的 I/O 最多。如下所示的 DMV 查詢可用於查詢可生成最多 I/O 的前五個請求。調整這些查詢將提高系統性能。

複製程式碼 selecttop5 
    (total_logical_reads
/execution_count) as avg_logical_reads,
    (total_logical_writes
/execution_count) as avg_logical_writes,
    (total_physical_reads
/execution_count) as avg_phys_reads,
     Execution_count, 
    statement_start_offset 
as stmt_start_offset, 
    sql_handle, 
    plan_handle
from sys.dm_exec_query_stats  
orderby  (total_logical_reads + total_logical_writes) Desc

相關推薦

sql優化DMV

Microsoft SQL Server 2005 提供了一些工具來監控資料庫。方法之一是動態管理檢視。動態管理檢視 (DMV) 和動態管理函式 (DMF) 返回的伺服器狀態資訊可用於監控伺服器例項的執行狀況、診斷問題和優化效能。 常規伺服器動態管理物件包括: dm_db_*:資料庫和資料庫物

EXPLAIN sql優化方法2 Using temporary ; Using filesort

它的 In 默認 const join 產生 收藏 -c 意思 優化GROUP BY語句 默認情況下,MySQL對所有GROUP BY col1,col2...的字段進行排序。這與在查詢中指定ORDER BY col1,col2...類似。因此,如果顯式包括一個包含

SQL優化建議mysql

1. 儘量避免在where子句中使用!=或<>操作符,否則將引起放棄使用索引而進行全表掃描。 2. 對查詢進行優化,因儘量避免全表掃描,首先應考慮在where以及order by涉及的列上建立索引。 3. 因儘量避免在where子句中對欄位進行null判斷,否則將導致引擎放棄使用索引而進行全表

基於Oracle的SQL優化--學習

Oracle裡的優化器    Oracle裡的優化器分為RBO和CBO兩種型別,RBO是基於規則的優化器,CBO是基於成本的優化器。    Oracle資料庫的SQL語句執行過程:    基於規則的優化器   Oracle會在程式碼裡事先給各個型別的執行路徑定一個等級,從等級

MySql中explain的時候出現using filesort,優化

原文地址:http://blog.csdn.net/imzoer/article/details/8485680 在使用order by關鍵字的時候,如果待排序的內容不能由所使用的索引直接完成排序的話,那麼mysql有可能就要進行檔案排序。 【這個 filesort

MySQL 資料庫效能優化索引優化

大家都知道索引對於資料訪問的效能有非常關鍵的作用,都知道索引可以提高資料訪問效率。 為什麼索引能提高資料訪問效能?他會不會有“副作用”?是不是索引建立越多,效能就越好?到底該如何設計索引,才能最大限度的發揮其效能? 這篇文章主要是帶著上面這幾個問題來做一個簡要的分析,

個人常用Oracle SQL優化工具指令碼介紹未完成

set termout on column TABLE_NAME heading "Tables owned by &Table_Owner" format a30 undefine table_name undefine owner prompt accept owner prompt 'Pleas

【JAVA秒會技術玩轉SQL】MySQL優化技術

MySQL優化技術(一)         開發的路上,總會碰到一些老系統,越用越慢。“慢”的原因也許有很多,但是,博主個人覺得,資料庫的設計和sql語句寫的好壞,對系統效率的影響是最直接,最顯而易見的!所以,學習一下MySQL的優化,還是很有必要的。當然,博主能力有限,沒那

SQL server學習——T-SQL編程存儲過程

mds ren creat 存儲 創建數據庫 希望 with 接收 bank 周五了,祝大家周末愉快。 之前一直在寫SQL server的分享,今天再來個T-SQL編程中的存儲過程。 存儲過程 存儲過程(procedure)類似於C語言中的函數,用來執行管理任務或應用復雜的

Java程式設計師從笨鳥到菜鳥一百sql注入攻擊詳解sql注入原理詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mybatis學習筆記——連線SQL server資料庫IDEA

我們新建一個普通的專案,File --> New --> Project -->Java --> Java EE。然後新建專案即可。 專案完成後我們新建一個conf資料夾,用來存放配置資訊,新建一個lib資料夾,用來存放jar包。 我們將mybatis的jar包,連線

T-SQL執行內幕4——優化

本文屬於SQL Server T-SQL執行內幕系列     接上文,當解析和編譯完成後,請求的生命週期就進入下一步——優化(Optimisation)。在SQL語言中,優化的本質就是找最好的路線。意思是在多種可能的候選資料訪問方式中選擇最佳一個。比如

Logistic迴歸梯度上升優化演算法

Logistic迴歸之梯度上升優化演算法(二) 有了上一篇的知識儲備,這一篇部落格我們就開始Python3實戰 1、資料準備 資料集:資料集下載 資料集內容比較簡單,我們可以簡單理解為第一列X,第二列Y,第三列是分類標籤。根據標籤的不同,對這些資料點進行分類。  

Logistic迴歸梯度上升優化演算法

Logistic迴歸之梯度上升優化演算法 一、Logistic迴歸 首先我們需要了解什麼是Logistic迴歸。Logistic迴歸是一種分類演算法,一般用於二分類問題,例如預測明天是否下雨,當然也可以用於多分類問題。本文主要是討論二分類問題。二分類問題即輸出結果一般只有兩個情況,我們可以理

Logistic迴歸梯度上升優化演算法

Logistic迴歸之梯度上升優化演算法(四) 從疝氣病症狀預測病馬的死亡率 1、實戰背景 我們使用Logistic迴歸來預測患疝氣病的馬的存活問題。原始資料集點選這裡下載。資料中一個包含了368個樣本和28個特徵。這種病不一定源自馬的腸胃問題,其他問題也可能引發疝氣病。該資料集中包含了

Logistic迴歸梯度上升優化演算法

Logistic迴歸之梯度上升優化演算法(三) 1、改進的隨機梯度上升演算法 前面兩節講了Logistic迴歸以及裡面常用的梯度上升優化演算法來找到最佳迴歸係數。但是梯度上升優化演算法的計算量很大,每次更新迴歸係數時都需要遍歷整個資料集。下面給出之前所講的梯度上升演算法: def gra

SQL優化理論基礎:MySQL架構總覽、查詢執行流程、SQL解析順序轉載

前言:   一直是想知道一條SQL語句是怎麼被執行的,它執行的順序是怎樣的,然後檢視總結各方資料,就有了下面這一篇博文了。   本文將從MySQL總體架構--->

Spark SQL優化流程解決叢集OOM問題

根據七張基礎業務表,生成大寬表 tt_sales_order 1826 7673 大 ord tt_deposit_order 56 0368 小 dep tt_vehicle_action 236 5624 中 vac tt_pipeline_pool 1000 0000

【朝花夕拾】Android效能優化Apk打包

        APK,即Android Package,是將android程式和資源整合在一起,形成的一個.apk檔案。相信所有的Android程式設計師是在IDE的幫助下,完成打包輕而易舉,但對打包流程真正清楚的可能並不多。本章的內容比較簡單,也是非常基礎的內容,但是對理解android應用的結構卻有很大

【朝花夕拾】Android效能優化序言及JVM篇

序言 筆者從事Anroid開發有些年頭了,深知掌握Anroid效能優化方面的知識的必要性,這是一個程式設計師必須修煉的內功。在面試中,它是面試官的摯愛,在工作中,它是程式碼質量的攔路虎,其重要性可見一斑。在團隊中,效能優化的工作又往往由經驗豐富的老師傅來完成,可見要做好效能優化,絕不是一件容易的事情。