日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多...

發布時間:2024/1/17 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

上一篇:讓你的筆記本更快一點——我的筆記本的性能測試和虛擬硬盤(把內存當成硬盤)的使用感覺

?

??????虛擬硬盤:就是把內存當作硬盤來用,比如有2G的內存,那么可以拿出來1G的內存當作硬盤來用。

??????自從知道了“虛擬硬盤”這個東東,我就一直在想如何才能把這個虛擬硬盤發揮到極致,上一篇也寫了一些簡單的應用,當然提高的效率并不多,并不是很理想。我最想提高的是提高數據庫的讀取速度,也就是提高分頁效率。一開始是想把數據庫文件放到虛擬硬盤里面,這樣讀取速度不就快樂嗎?但是當我把一個250萬條記錄的數據庫放在了虛擬硬盤上做測試后,發現效果并不理想。

??????250萬條記錄,利用主鍵排序(聚集索引),可以提高幾倍的效率,但是如果換成一般的字段(nvarchar類型的,沒有設置索引),查看第1000頁的數據的時候居然超時了?!這個也太。。。還是“內存”了嗎?無意間看了一眼硬盤指示燈,這個燈在顯示數據的時候居然一直在亮!不會把,從虛擬硬盤里面讀數據,硬盤燈為什么會亮呀?看來SQL Server2000在大量數據排序的時候會往硬盤里面寫數據。查看了一下發現SQL Server2000會往Tempdb數據庫里面寫數據,居然寫了100多M的數據,看來這是照成超時的原因了。

??????那么能不能把Tempdb換到虛擬硬盤里面呢?一開始用了一個笨著,竟然把SQL Server2000給弄死了,害得我重裝了一遍。后來才發現,有現成的SQL語句可以使用。好了現在可以改Tempdb的位置了,再來測試一遍。這回效果比較理想,翻到第5000頁,花費了11秒多,沒有超時。

?

?

USE?master
Go
ALTER?DATABASE?tempdb?MODIFY?FILE?(NAME?=?tempdev,?FILENAME?=?'t:\data\tempdb.mdf')
Go
ALTER?DATABASE?tempdb?MODIFY?FILE?(NAME?=?templog,?FILENAME?=?'t:\data\templog.ldf')
Go

?

??????Tempdb數據庫里并不會存放重要數據,丟掉了也不會有什么大問題,只需要在重啟計算機后把文件拷貝過去就可以了,代價不大,效率卻可以提高很多,有減少了硬盤的讀寫次數,保護了硬盤嘛,應該是一個很好的方法。

?

??????測試的具體情況:

??????SQL Server 2000 ,Northwind數據庫里的Products表,表里面有2523136條記錄數,??每頁15條記錄,共168210頁。

??????ProductID 字段是主鍵,聚集索引,其他字段都沒有索引。

??????1、使用顛倒Top的分頁算法,按照ProductName,ProductID來排序。一開始比較慢,需要20多秒(需要把數據讀取到Tempdb),后來就快了一些,11秒左右。就是說翻到了第1000頁、第 5000頁只需要11秒左右,硬盤燈也沒怎么亮。第10000頁,12秒。第十萬頁,22秒。(注意:這是250萬條記錄,按照nvarchar字段排序的結果

??????第99999頁使用的SQL語句:

?

?select?*?from?Products?where?productid?in?
???(?
select?top?15?productid?from?
?????(?
select?top?1499985?productname,productid?from?Products?
?????????
order?by?productname,productid?)?as?t?
??????
order?by?t.productname?desc,t.productid?desc?)

order?by?productname,productid?

?

?

??????2、使用Max分頁算法,按照主鍵(ProductID)字段排序。這個就非常快了,10000頁以內都是0毫秒到32毫秒,第五萬頁是200毫秒左右,第十萬頁是300多毫秒,第十六萬頁(快到最后了)是600毫秒左右。可以用秒殺來形容了。

??????第1600000頁使用的SQL語句:

?

select?top?15?*?from?Products?
where?productid>=?
??(
SELECT?max(productid?)?from?
?????(
select?top?2399986?productid?from?Products?order?by?productid?)?as?t?)

?
order?by?productid?

?

??? 2.1、同樣的條件下,如果Tempdb放在物理硬盤里面的話,速度慢很多。下面是測試數據。(使用Max分頁算法,按照主鍵(ProductID)字段排序)

????

頁號時間:毫秒
第1頁156
第2頁15
第10000頁1390
第10001頁47
第140000頁8391
第140001頁546
第160000頁1766
第160001頁600
???

?????注意:這里并不是想說分頁算法如何如何的快,而是想說,對于SQL Server2000來說,如果把Tempdb數據庫的文件(tempdb.mdf)放在虛擬硬盤里面,可以提高很大的效率!至于SQL Server 2005還沒有測試。

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的利用虚拟硬盘(把内存当作硬盘)来提高数据库的效率(目前只针对SQL Server 2000)可以提高很多...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。