1.1:增加次數據文件
從SQL SERVER 2005開始,數據庫不默認生成NDF數據文件,一般情況下有一個主數據文件(MDF)就夠了,但是有些大型的數據庫,由於信息很多,而且查詢頻繁,所以為了提高查詢速度,可以把一些表或者一些表中的部分記錄分開存儲在不同的數據文件里
由於CPU和內存的速度遠大於硬盤的讀寫速度,所以可以把不同的數據文件放在不同的物理硬盤里,這樣執行查詢的時候,就可以讓多個硬盤同時進行查詢,以充分利用CPU和內存的性能,提高查詢速度。 在這里詳細介紹一下其寫入的原理,數據文件(MDF、NDF)和日志文件(LDF)的寫入方式是不一樣的:
數據文件:SQL Server按照同一個文件組里面的所有文件現有空閑空間的大小,按這個比例把新的數據分布到所有有空間的數據文件里,如果有三個數據文件A.MDF,B.NDF,C.NDF,空閑大小分別為200mb,100mb,和50mb,那么寫入一個70mb的東西,他就會向ABC三個文件中一次寫入40、20、10的數據,如果某個日志文件已滿,就不會向其寫入
日志文件:日志文件是按照順序寫入的,一個寫滿,才會寫入另外一個
由上可見,如果能增加其數據文件NDF,有利於大數據量的查詢速度,但是增加日志文件卻沒什么用處。
1.2:設置文件自動增長(大數據量,小數據量無需設置)
在SQL Server 2005中,默認MDF文件初始大小為5MB,自增為1MB,不限增長,LDF初始為1MB,增長為10%,限制文件增長到一定的數目,一般設計中,使用SQL自帶的設計即可,但是大型數據庫設計中,最好親自去設計其增長和初始大小,如果初始值太小,那么很快數據庫就會寫滿,如果寫滿,在進行插入會是什么情況呢?當數據文件寫滿,進行某些操作時,SQL Server會讓操作等待,直到文件自動增長結束了,原先的那個操作才能繼續進行。如果自增長用了很長時間,原先的操作會等不及就超時取消了(一般默認的閾值是15秒),不但這個操作會回滾,文件自動增長也會被取消。也就是說,這一次文件沒有得到任何增大,增長的時間根據自動增長的大小確定的,如果太小,可能一次操作需要連續幾次增長才能滿足,如果太大,就需要等待很長時間,所以設置自動增長要注意一下幾點:
1)要設置成按固定大小增長,而不能按比例。這樣就能避免一次增長太多或者太少所帶來的不必要的麻煩。建議對比較小的數據庫,設置一次增長50 MB到100 MB。對大的數據庫,設置一次增長100 MB到200 MB。
2)要定期監測各個數據文件的使用情況,盡量保證每個文件剩余的空間一樣大,或者是期望的比例。
3)設置文件最大值,以免SQL Server文件自增長用盡磁盤空間,影響操作系統。
4)發生自增長后,要及時檢查新的數據文件空間分配情況。避免SQL Server總是往個別文件寫數據。
因此,對於一個比較繁忙的數據庫,推薦的設置是開啟數據庫自動增長選項,以防數據庫空間用盡導致應用程序失敗,但是要嚴格避免自動增長的發生。同時,盡量不要使用自動收縮功能。
1.3 數據和日志文件分開存放在不同磁盤上
數據文件和日志文件的操作會產生大量的I/O。在可能的條件下,日志文件應該存放在一個與數據和索引所在的數據文件不同的硬盤上以分散I/O,同時還有利於數據庫的災難恢復。