sql優化之(DMV)
Microsoft SQL Server 2005 提供了一些工具來監控資料庫。方法之一是動態管理檢視。動態管理檢視 (DMV) 和動態管理函式 (DMF) 返回的伺服器狀態資訊可用於監控伺服器例項的執行狀況、診斷問題和優化效能。
常規伺服器動態管理物件包括:
-
dm_db_*:資料庫和資料庫物件
-
dm_exec_*:執行使用者程式碼和關聯的連線
-
dm_os_*:記憶體、鎖定和時間安排
-
dm_tran_*:事務和隔離
-
dm_io_*:網路和磁碟的輸入/輸出
此部分介紹為監控 SQL Server 執行狀況而針對這些動態管理檢視和函式執行的一些常用查詢。
摘錄部分精彩SQL如下:
下面的查詢顯示 CPU 平均佔用率最高的前 50 個 SQL 語句。
SELECTTOP50total_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)/2) FROM sys.dm_exec_sql_text(sql_handle))
ORDERBY[Avg CPU Time]DESC
下面的查詢顯示一些可能佔用大量 CPU 使用率的運算子(例如 ‘%Hash Match%’、‘%Sort%’)以找出可疑物件。
sys.dm_exec_cached_plans
cross apply sys.dm_exec_query_plan(plan_handle)
wherecast(query_plan asnvarchar(max)) like'%Sort%'orcast(query_plan
執行下面的 DMV 查詢以檢視 CPU、計劃程式記憶體和緩衝池資訊。
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 指示該查詢已重新編譯的次數。
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 的前五個請求。調整這些查詢將提高系統性能。
(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效能優化方面的知識的必要性,這是一個程式設計師必須修煉的內功。在面試中,它是面試官的摯愛,在工作中,它是程式碼質量的攔路虎,其重要性可見一斑。在團隊中,效能優化的工作又往往由經驗豐富的老師傅來完成,可見要做好效能優化,絕不是一件容易的事情。