FLASH論壇-Flash之神魂顛倒Microsoft 應用技術區資料庫 MS SQL 2008 / 2005 討論區 → [MSSQL]SQL SERVER 2000壓力測試

MSDN 研討會資料下載 熱門租屋行情 網路行銷秘訣大公開 磷蝦油=比魚油更強 Microsoft Silverlight
減肥診所 雷射抽脂 ASP.NET完全攻略與快速上手 買墨水送神幣喔 貸款
近視雷射手術 電波拉皮 隆乳 胎毛筆 當鋪
投影機 生日禮物 借錢 調整型內衣 白蟻
氣球 眼袋 虛擬主機神魂特惠 大陸新娘 NCCU集中營
網頁設計 愛情城市 保險套 液晶電視

  共有3871人閱讀過本文章折疊列印

主題:[MSSQL]SQL SERVER 2000壓力測試

帥哥喲,離線,有人找我嗎?
TWG
  1樓 個人化首頁 | QQ | 個人資料 | 搜尋 | EMAIL | 首頁 | |

加到: FunP 書籤加到: 黑米書籤加到: MyShare 書籤加到: 美味書籤加到: Furl  書籤加到: YaHoo 分享書籤加到: Google 書籤加到: UDN 書籤加到: Technorati 書籤



加好友 悄悄話 •神•魂•顛•倒•
等級:站長 文章:2569 經驗:25137 威望:7 精華:7 註冊:2002-4-12 15:57:00
  發表心情 Post By:2004-12-30 0:47:00



SQL SERVER 2000壓力測試

這是我剛進入現在公司的時候所作的兩個測試報告之一,現公佈出來,希望能對大家有所幫助。
隨著Microsoft的新一代關係資料庫系統SQL SERVER 2000(以下簡稱SQL2K)的發佈,業界紛紛瞄準了它的性能,尤其是針對於Oracle 8的性能比較。在一系列的測試中,SQL2K的的確確沒有辜負微軟對它的期望,獲得了相當不錯的成績,終於肩負起對抗Oracle,搶佔高端資料庫市場的使命。
在關係資料庫的應用當中,當隨著數量級或者容量級的資料急劇膨脹,很多資料庫的性能就飛速下降。因此在要求嚴格的應用中,通常Oracle資料庫是作為使用者的首選,然而其高昂的價格卻讓人望而卻步。隨著SQL2K的到來,我們期待著Microsoft的SQL2K在大記錄量和大容量的情況下能有優秀的表現。在此,我們針對SQL2K在這兩方面表現的性能作了測試。
測試計劃:
整個測試過程分為兩個部分,第一部分是資料庫大容量狀態下的執行情況,第二部分是資料庫在大記錄量下的執行情況。為了方便測試,我們編寫了一個程式進行各種資料庫操作,並進行效率紀錄。
在兩個部分的測試中,我們分別在空資料庫環境下進行各種資料庫基本操作,並記錄各個操作所需要的時間,然後再插入了大容量/大記錄量的資料後,再作同樣的操作並紀錄操作所需時間。最後對前後的時間進行比較。當然,由於網路傳輸等問題,可能導致一些誤差,但是這對我們的測試不會有太大的影響。

測試準備:
★ 測試環境:
OS:Windows 2000 Server
Database:Microsoft SQL Server 2000
Database Server:ADV2000

★ 創建資料庫:
使用「企業管理器」在資料庫伺服器上創建資料庫test,並且設定其大小為10GB,以避免在預設容量大小下,隨著資料庫容量增加而導致伺服器動態分配磁盤空間的時候引起開銷。
隨後再在test資料庫上創建一個Tab表,包含以下幾個字段:
字段名 資料類型 字段情況 可否為空
id Int,4 主鍵,自加 不可
name Char, 10 不可
age Int, 4 不可
Photo Image, 16 可

(表一)

★ 並且我們使用Delphi 6編寫了一個測試程式,採用ADO接口,連接資料庫伺服器ADV2000。測試程式主要完成一下的功能:
1、 插入2000條資料(insert)
2、 選擇1000條資料(select)
3、 更新1000條資料(update)
4、 刪除1000條資料(delete)
5、 插入100,000條帶圖片資料(用於大容量測試)/插入1,000,000條不帶圖片測試(用於大記錄量測試)

測試過程
整個測試過程分為大容量資料測試和大記錄量資料測試:
大容量資料測試:
在大容量的資料測試中,我們通過插入圖片來使資料庫的容量膨脹,所以在以下的所有資料庫操作中,例如插入資料,都是指的插入帶圖片的資料。測試中選擇了一張41,958字節的圖片,並且大容量測試是在插入100,000條記錄以後的測試,因此我們可以大致估計當時的資料表的容量為 (41958 * 100000) / (1024 * 1024) = 4001.43MB。

首先通過測試程式按順序進行如下測試,在空表中「插入2000條紀錄->選擇1000條記錄->更新1000條記錄->刪除1000條記錄」,並記錄下各操作所需要的時間。測試結果如下圖和表中:
(圖一)

Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
132.781 S 41.94 S 0.841 S 1.552S

(表二)

上面的測試是在空資料表中進行資料庫各種基本操作的測試,並且記錄了所需要的時間。然後我們插入100,000條帶有圖片的紀錄,使資料表的資料量膨脹到4001.43MB,接下來的工作就是測試大容量環境下的各種資料庫操作情況。
(圖二)

同樣按照以上的的步驟進行測試:「插入2000條紀錄->選擇1000條記錄->更新1000條記錄->刪除1000條記錄」,並記錄下各操作的時間,如下:
(圖三)

Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
139.05 S 42.36 S 0.971 S 2.264 S

(表三)
通過對比,我們發現:
在大記錄量(百萬條記錄得資料量下),對SQL2K的影響並不算大,其性能影響也比較小,從下圖以看出來:
(圖四)
從這個柱狀圖可以反映出在需要大量時間的SQL操作中,SQL2K在大容量資料環境下的性能基本能保持,不會有太多的性能下降。但是從後面兩個只需要極短時間執行的SQL操作從圖中無法反映出什麼情況。
那讓我們通過計算再來看一下了,下面是在大容量資料環境下,同樣操作增加的時間與初始資料庫環境下所需時間的百分比:
Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
4.72% 1.001% 15.46% 45.88%

(表四)
從表中中可以看出,Update和Delete操作的時候,好像在大容量環境下的性能損失嚴重。但是考慮到,因為存取的資料庫伺服器與客戶端位於不同的機器上,雖然通過100M的內部網連接,但是由於網路的問題,導致了存取中網路的延時。當操作所需要的時間比較大的時候,這一點延時對時間比例影響不大,而一旦操作所需要的時間比較短的時候,這個延時就顯得尤為突出了。
對於Delete操作中的45.55%的性能損失,還有一個原因是,當刪除紀錄的時候,資料庫會重建索引。當資料量太大的原因下,導致了重建索引耗費了較多的時間。
大記錄量資料測試:
在大記錄量環境下的測試,為了讓大容量測試不影響這次測試,首先我們徹底刪除掉大容量測試中使用的表Tab,並且重新創建一個完全一樣的新表Tab用於此次測試。
這個測試中的步驟和上一個測試基本一樣,同樣測試了空表狀況下的各個基本資料庫操作所需要的時間,但是,這個測試中我們沒有插入圖片,photo字段沒有插入任何東西,保持為空:「插入2000條紀錄->選擇1000條記錄->更新1000條記錄->刪除1000條記錄」,如下所示:
(圖五)

Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
16.274 S 0.07 S 0.04 S 0.04 S

(表五)

在大容量資料環境下,我們插入的是100,000條帶有圖片的資料,從而導致了資料量達到了4001MB,而在這次的大記錄量環境下的測試,100,000條資料量可能已經不能滿足我們的需要,我們希望能在更高資料量環境下進行測試,以便於增大添入大數量級資料前後操作效率的差異,因此選擇了插入1,000,000條資料。
(圖六)
完成我們的大數量級的資料插入以後,進行下一步的測試紀錄:「插入2000條紀錄->選擇1000條記錄->更新1000條記錄->刪除1000條記錄」,記錄下每一個操作所需要的時間,如下所示:
(圖七)
Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
16.574 S 0.05 S 0.05 S 0.051 S

(表六)

比較兩種狀況下的測試結果:
(圖八)
從第一個操作Insert來看,同樣SQL2K在大記錄量環境下性能損失不大,但是其它幾個操作結果從這個圖中依舊無法表現出來,我們只能通過增加時間百分比來作比較:


Insert 2000條紀錄 Select 1000條紀錄 Update 1000條紀錄 Delete 1000條紀錄
1.84% -28.6% 25% 27.5%

(表七)
通過增長時間的百分比可以看出在這幾個操作中性能有所損失,但是我們卻無法派出是否是因為這些操作時間太短,因為網路而引起的誤差。
四、測試結果
總結:雖然在測試中,因為很多的SQL操作因為所需要的時間過短,而導致受到網路傳輸的影響。但是我們仍然可以通過所需時間較長的SQL操作進行總結:
無論是在大容量(數GB單位)還是大記錄量(百萬條記錄量)環境下,SQL SERVER 2000的性能都能保持較高的水平。一般情況下的性能損失不到5%,因此完全能夠滿足我們通常的實際應用。
但是因為硬體等條件的限制下,我們無法對更大容量(十GB、百GB乃至TB容量級),更大記錄量(千萬,億級資料量)的環境下進行測試。
總體說來,在普通的企業級應用中,SQL SERVER 2000已經是能夠滿足我們的要求。


網路的事情,讓網路解決

[ 逛網路就像是在探險 ]

    神 魂 顛 倒 T W G

http://bbs.flash2u.com.tw

http://tw.myblog.yahoo.com/flash2u-twg

http://flash-silverlight.blogspot.com/

http://flash2u.spaces.live.com/?_c02_owner=1
減肥診所 支持(0中立(0反對(0回到頂部