資料庫效能優化測試

2022-04-19 10:05:11 字數 1863 閱讀 5146

對於優化sql語句或儲存過程,以前主要是用如下語句來判斷具體執行時間,但是sql環境是複雜多變的,下面語句並不能精準判斷效能是否提高;如果需要精確知道cpu、io等資訊,就無能為力了。

print

convert(varchar(30),getdate(),121

)select

*from sales.salesorderdetail where salesorderid >

64185

print

convert(varchar(30),getdate(),121)

這時候如果使用set statistics time onset statistics io on指令就能清楚的知道了,在測試之前需執行下面2條命令

dbcc dropcleanbuffers清除緩衝區

dbcc freeproccache刪除計畫快取記憶體中的元素

-- 測試

首先執行下面指令碼

--

開啟統計資訊

setstatistics time on

setstatistics io on

goselect

*from sales.salesorderdetail where salesorderid >

64185

go

結果如下

--

1. cpu 時間

=0 毫秒,占用時間 =

53毫秒。

--2.

cpu 時間

=0 毫秒,占用時間 =

0毫秒。 (

35292

行受影響)

--3.

表 'salesorderdetail

'。掃瞄計數 1,邏輯讀取 337 次,物理讀取 4 次,預讀 333 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0次。

--4.

cpu 時間

=47 毫秒,占用時間 =

893 毫秒。

說明:標記1:表示將語句的結果放到sql緩衝區所需要的cpu時間和總時間

標記2:標識從緩衝區中取出解析結果所需要的時間

標記4:標識這次查詢使用了多少cpu時間和總的時間,其中cpu時間是對查詢所需cpu資源的一種比較穩定的測量方式;總時間則跟sql伺服器有關,因此比較不穩定;所以效能判斷的時候可以以cpu時間來做標準。

標記3:資源時間;其中邏輯讀是指sql從緩衝區讀取的資料;物理讀是指從資料從磁碟讀取到緩衝區中;

再次執行查詢語句結果如下,由於第一次執行的時候,資料已經從磁碟讀取到緩衝區,因此標記1的時間也就是0了,標記3物理讀也為0了。

--

1. cpu 時間

=0 毫秒,占用時間 =

0毫秒。

--2.

cpu 時間

=0 毫秒,占用時間 =

0毫秒。 (

35292

行受影響)

--3.

表 'salesorderdetail

'。掃瞄計數 1,邏輯讀取 337 次,物理讀取 0 次,預讀 0 次,lob 邏輯讀取 0 次,lob 物理讀取 0 次,lob 預讀 0次。

--4.

cpu 時間

=32 毫秒,占用時間 =

848 毫秒。

在優化sql語句的時候可以從cpu時間,邏輯讀取數來判斷效能是否提公升,而且這2個指標是比較真實的反映了sql執**況的。這裡只是簡單介紹了一下這2個命令的一些基本資訊,則需更加深入了解sql底層知識。

資料庫效能優化

資料庫設計 實現sql server資料庫的優化,首先要有乙個好的資料庫設計方案。在實際工作中,許多sql server方案往往是由於資料庫設計得不好導致效能很差。實現良好的資料庫設計必須考慮這些問題 1.邏輯資料庫規範化問題 一般來說,邏輯資料庫設計會滿足規範化的前3級標準 第1規範 沒有重複的組...

資料庫效能優化

1 系統設計 1 縱向 橫向分割表,減少表的尺寸 縱向 欄位多。按業務主題分割。根據頁大小。橫向 資料多。按條件分割表。eg 按年儲存表,歷史資料表和當期資料更新表。2 將資料處理交給db,編寫儲存過程 1 減少網路的開銷 2 儲存過程是編譯 優化過,速度快。3 唯讀查詢操作優化方法 1 資料量小的...

資料庫效能優化

最近要寫一些關於企業級應用的優化內容的東西,就先從資料庫優化入手吧,在這裡先記錄一下。作為一名有資料庫教育背景的工作人員,我著重從db的角度介紹一下,我認為的db優化方式。首先,撇開經濟商業用處不談,db效能優化的原則主要是,通過盡可能少的磁碟訪問獲得所需的資料。一般而言,資料的是優化可以從三方面分...