上一篇引起了大家的討論,看著討論我是比較暈的,這也怪我沒有說清楚,所以再補一個續把問題說 清楚吧。
筆記本配置
CPU:Core 2 7250 2.0G
內存:4G,其中2G設置成了虛擬硬盤,虛擬硬盤的軟件:Ramdisk。讀取:5.5G,寫入:3.5G。
硬盤:160G,平均讀取:70M/s。寫入:不詳,估計沒有讀取快。
(內存的讀取速度是硬盤的讀取速度的785倍。)
這裡是我的筆記本的測試:http://www.cnblogs.com/jyk/archive/2009/05/10/1453551.html
軟件:SQL Server 2000,asp.net2.0
SQL Server 2000 裡面有幾個重要的數據庫,master、model、msdb、tempdb,這裡主要想說的是 tempdb數據庫,這裡有一個MSND的介紹。
目的:提高SQL Server 2000顯示數據時的速度。
想法:把tempdb 放在虛擬硬盤(即內存)裡面,利用內存的讀寫速度遠遠大於硬盤的優勢,提高速度 。
事件的經過:
上周三,一開始的想法是想要把客戶的數據庫直接放在虛擬硬盤裡面測試一下速度,也就是對比一下 看看能夠提高多少性能,如果性能能夠提高很多的話,那麼在考慮一下保證數據的安全性,也就是說在意 外發生的時候,保證數據不能丟失。
我是想先看看性能到底能夠提高多少,如果提高的多的話才有應用價值,如果提高微弱,那就一點價 值都沒有了。於是我利用SQL Server 2000自帶的northwnd,把裡面的Products表裡面的數據copy到了250 萬條以便於測試。然後再把數據庫文件復制成兩份,一份放在物理硬盤裡面,附加到數據庫裡,叫做 northwnd_Disk;另一份放在虛擬硬盤(即內存)裡面,附加到數據庫裡,叫做northwnd_Ram。好了兩份 數據庫准備好了,下面開始測試。
我先測試了一下能夠利用索引的情況,使用Max的分頁算法,按照ProductID(主鍵,聚集索引)排序 。兩個數據庫都沒有超時,northwnd_Ram可以提高8倍左右的效率,基本還可以。
能夠利用索引自然是好,但是好多情況是不能利用索引的呀,那麼再不能利用索引的情況下,虛擬硬 盤能夠帶來多少的性能提升呢?於是我又做了第二個實驗。
不能利用索引的情況,還是用那兩個數據庫,這回按照 order by ProductName, ProductID的條件來 分頁,采用顛倒Top的分頁算法(注意這裡並不是想要討論分頁算法的效率問題,而是要看看虛擬硬盤的 效率)。