自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server性能調(diào)優(yōu)之執(zhí)行計(jì)劃第一次實(shí)踐

數(shù)據(jù)庫(kù) SQL Server 數(shù)據(jù)庫(kù)運(yùn)維
自從上一篇文章發(fā)出之后,收到了很朋友的關(guān)注。很多朋友要求多多實(shí)踐,而不是純粹的理論。確實(shí),從打算出這個(gè)系列開始,我就本著實(shí)踐的思想來進(jìn)行的!

自從上一篇文章發(fā)出之后,收到了很朋友的關(guān)注。很多朋友要求多多實(shí)踐,而不是純粹的理論。確實(shí),從打算出這個(gè)系列開始,我就本著實(shí)踐的思想來進(jìn)行的!同時(shí),為了使得大家更好的理解、消化這些知識(shí),我會(huì)定期的就所寫內(nèi)容進(jìn)行在線的視頻講座,朋友們可以去參與這個(gè)小組:http://www.agilesharp.com/c/sqlprofiler.aspx,報(bào)名活動(dòng)開始啦:http://www.agilesharp.com/Event.aspx/T-2

議程如下:

  • 實(shí)踐概述
  • 圖形化執(zhí)行計(jì)劃實(shí)戰(zhàn)
  • 執(zhí)行計(jì)劃信息解讀

實(shí)踐概述

執(zhí)行計(jì)劃可以輔助我們寫出高效率的T-SQL代碼,同時(shí)也可以找出現(xiàn)有T-SQL代碼的問題,還可以監(jiān)控?cái)?shù)據(jù)庫(kù)!當(dāng)然,***如何使用執(zhí)行計(jì)劃還是取決于我們自己了,但是不管怎么樣,我們首先學(xué)會(huì)解析執(zhí)行計(jì)劃中所包含的信息,最快的學(xué)習(xí)方法就是實(shí)踐。下面,我們就從一個(gè)實(shí)踐開始。

為了使得大家易于理解,這里的例子不會(huì)太復(fù)雜,隨著課程的不斷深入,后續(xù)的示例也會(huì)越來越復(fù)雜。同時(shí),如果大家也想跟著一起動(dòng)手實(shí)踐,那么希望朋友們安裝SQL2005或更高版本,同時(shí)記得安裝AdventureWorks數(shù)據(jù)庫(kù)。下載地址為:http://msftdbprodsamples.codeplex.com

另外,有一個(gè)需要注意的是,由于數(shù)據(jù)庫(kù)中數(shù)據(jù),操作和時(shí)間的關(guān)系,可能大家在運(yùn)行腳本產(chǎn)生的執(zhí)行計(jì)劃和我這里不完全一樣,這是沒有任何問題的!

圖形化執(zhí)行計(jì)劃實(shí)戰(zhàn)

下面我們正式進(jìn)入要討論的話題。

首先,為了使得我們可以查看執(zhí)行計(jì)劃,最起碼要確保我們?cè)诘卿洈?shù)據(jù)庫(kù)的時(shí)候,要被授予權(quán)限,如下語句所示:

  1. GRANT SHOWPLAN TO [username] 

為了將討論集中在執(zhí)行計(jì)劃(估計(jì)執(zhí)行計(jì)劃和實(shí)際執(zhí)行計(jì)劃)上,我們這里這是運(yùn)行一個(gè)比較簡(jiǎn)單的查詢,如下代碼所示:

  1. SELECT * FROM [dbo].[DatabaseLog]; 

下面,我們就來看看這個(gè)語句的估計(jì)執(zhí)行計(jì)劃,正如之前文章講述的:估計(jì)執(zhí)行計(jì)劃是優(yōu)化器使用了的元數(shù)據(jù),成本分析算法等而產(chǎn)生的計(jì)劃,這個(gè)計(jì)劃是查詢語句執(zhí)前的一個(gè)分析!

顯示估計(jì)執(zhí)行計(jì)劃

我們可以采用以下幾種方式顯示估計(jì)執(zhí)行計(jì)劃:

  1.  點(diǎn)擊Sql Server Studio工具欄上的按鈕:
  2.  在查詢窗口右擊鼠標(biāo),如下所示:
  3.  使用快捷鍵“CTRL + L”.

對(duì)以上面的查詢語句,顯示的圖形化的估計(jì)查詢計(jì)劃如下:

顯示執(zhí)行查詢計(jì)劃

與估計(jì)執(zhí)行計(jì)劃不同,實(shí)際的執(zhí)行計(jì)劃不是優(yōu)化器產(chǎn)生的,實(shí)際的執(zhí)行計(jì)劃是底層的存儲(chǔ)引擎在執(zhí)行時(shí)候產(chǎn)生的,這個(gè)計(jì)劃中包含了大量的實(shí)際的底層數(shù)據(jù)和相關(guān)的信息。

我們可以采用以下方式獲得實(shí)際的執(zhí)行計(jì)劃,如下所示:

  1.  點(diǎn)擊工具欄上面的按鈕:
  2.  在查詢窗口右擊鼠標(biāo),如下:
  3.  快捷鍵“CTRL + M”

上述查詢的實(shí)際執(zhí)行計(jì)劃如下所示:

大家初一看,以為兩者沒有區(qū)別,但是它們包含的數(shù)據(jù)信息很多是不一樣的。

下面,我們就開始對(duì)圖形化的執(zhí)行計(jì)劃進(jìn)行解讀。

#p#

執(zhí)行計(jì)劃信息解讀

剛剛大家已經(jīng)看了圖形化的執(zhí)行計(jì)劃了,相關(guān)大家比較關(guān)心的問題有兩個(gè):如何解讀執(zhí)行計(jì)劃中提供的各種信息;如何采用執(zhí)行計(jì)劃來進(jìn)行性能調(diào)優(yōu)。

我們首先來看看***個(gè)問題。

一般而言,我們?cè)陂喿x圖形化的執(zhí)行計(jì)劃的時(shí)候順序是這樣的:從右向左,從下往上。也就說:sql執(zhí)行的***步就顯示在執(zhí)行計(jì)劃的右下角。

在圖形化執(zhí)行計(jì)劃中的每一個(gè)圖標(biāo),都表示一個(gè)操作,在之前的執(zhí)行計(jì)劃中就有兩個(gè)操作。并且每個(gè)操作之前采用箭頭連接起來,表明了數(shù)據(jù)流動(dòng)的方向,其中箭頭的粗細(xì)就反應(yīng)了數(shù)據(jù)量的大小。

另外,在每個(gè)操作下面都顯示了一個(gè)百分比。

對(duì)于估計(jì)執(zhí)行計(jì)劃而言,這個(gè)數(shù)字就是優(yōu)化器對(duì)執(zhí)行計(jì)劃中每一個(gè)操作步驟進(jìn)行成本分析后的結(jié)果。例外,在我們的例子中,整個(gè)查詢***會(huì)有兩個(gè)操作會(huì)進(jìn)行,Select和Table Scan,其中整個(gè)查詢的成本將會(huì)落在Table Scan(整表掃描)上。

操作提示信息

當(dāng)我們把鼠標(biāo)放在每個(gè)操作或箭頭上面的時(shí)候,就會(huì)彈出更多的相關(guān)信息,我們下面就來具體的看一看。

例如,當(dāng)我們把鼠標(biāo)放在執(zhí)行計(jì)劃的Select操作上面,顯示如圖:

上面圖中給出的信息非常清楚了,我這里只是解釋一下“估計(jì)子樹大小”。因?yàn)閳?zhí)行計(jì)劃可以看出是sql語句的邏輯執(zhí)行步驟,這個(gè)選項(xiàng)就告訴我們:在我們現(xiàn)在所看的這個(gè)操作步驟以及后面的所有步驟的開銷是多少,是一個(gè)總計(jì)數(shù)字。

如何朋友們還有有什么不清楚的,我們?cè)诤罄m(xù)將要展開的在線講座中講述!

下面我們看看Table Scan的提示信息,如下圖所示:

雖然這個(gè)操作中包含的信息就非常的多了,但是卻都很容易理解。

這里要稍微重點(diǎn)提一下就是“已排序”。很明顯,這個(gè)值告訴我們:Table Scan這個(gè)操作是建立在對(duì)數(shù)據(jù)排序的基礎(chǔ)上的。例如,在查詢語句中,有時(shí)候,我們寫上order by語句,那么后續(xù)的很多的操作都是在已經(jīng)排序的數(shù)據(jù)基礎(chǔ)上進(jìn)行,通過查看“已排序”是true還是false,我們就可以知道,查詢語句內(nèi)部是否自己進(jìn)行了額外的排序操作(有時(shí)候,我們明明沒有寫order by,但是優(yōu)化器卻認(rèn)為進(jìn)行order by之后成本更小,這個(gè)時(shí)候我們就要注意了)。

***稍微的提一下“節(jié)點(diǎn)ID”,這個(gè)值就反應(yīng)了操作在整個(gè)執(zhí)行計(jì)劃中的執(zhí)行順序,數(shù)字越小,說明越早被執(zhí)行。在上圖中,表明table scan操作時(shí)整個(gè)執(zhí)行計(jì)劃的***步。

為了使得大家更加的清楚,下面我們把之前的查詢語句稍微的改下:

  1. SELECT * FROM [dbo].[DatabaseLog] order by  PostTime 

估計(jì)執(zhí)行計(jì)劃如下:

我們查看提示信息,發(fā)現(xiàn)排序***進(jìn)行,然后再整表掃描。

今天就暫時(shí)到這里,下一篇,我們講述相關(guān)的操作以及以文本和xml的形式查看執(zhí)行計(jì)劃。

原文鏈接:http://www.cnblogs.com/yanyangtian/archive/2011/09/05/2167093.html

【編輯推薦】

  1. 養(yǎng)成一個(gè)SQL好習(xí)慣帶來一筆大財(cái)富
  2. 告訴你,如何成就DBA職業(yè)生涯
  3. SQL Server性能調(diào)優(yōu)之淺析SQL執(zhí)行的過程
  4. 客戶的一次疏忽,DBA的一次噩夢(mèng)
  5. 數(shù)據(jù)庫(kù)點(diǎn)滴之精妙SQL語句
責(zé)任編輯:艾婧 來源: IT創(chuàng)業(yè)產(chǎn)品互推平臺(tái)
相關(guān)推薦

2011-09-02 14:05:25

SQL Server性能調(diào)優(yōu)

2015-04-22 14:17:45

SQL SERVERMSSQL SERVE緩沖區(qū)

2011-09-14 17:03:17

數(shù)據(jù)庫(kù)執(zhí)行計(jì)劃解析

2024-12-17 14:52:46

2021-11-07 23:49:19

SQL數(shù)據(jù)庫(kù)工具

2011-07-21 21:01:37

諾基亞塞班蘋果

2017-03-22 15:38:28

代碼架構(gòu)Java

2009-01-08 19:14:37

服務(wù)器應(yīng)用程序SQL Server

2010-07-19 13:35:51

SQL Server性

2023-09-11 00:14:46

后端團(tuán)隊(duì)項(xiàng)目

2014-08-28 09:54:35

SQL Server

2017-07-21 08:55:13

TomcatJVM容器

2011-01-21 08:38:20

2009-01-08 19:11:39

服務(wù)器應(yīng)用程序SQL Server

2009-01-08 19:06:13

服務(wù)器應(yīng)用程序SQL Server

2019-11-28 08:31:21

Oracle數(shù)據(jù)庫(kù)索引

2012-04-13 10:11:58

Windows 8泄露

2022-03-16 14:59:28

打包debian模板文件

2022-08-15 08:16:56

shiroWeb認(rèn)證

2022-08-08 08:03:44

MySQL數(shù)據(jù)庫(kù)CBO
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)