標籤:使用 sp strong on 檔案 資料 問題 bs ef
資料庫管理
說起資料庫管理——————首先要說的就是資料庫設計,一個好的資料庫設計理念能避免很多資料庫引起的麻煩和後期維護的成本
1、首先要考慮的就是資料庫許可權和安全,首先有條件優先考慮的是將資料庫部署在資料庫叢集,當然資料量不大沖從成本上考慮可以是不建議使用的
許可權這個主要是登陸使用者權限和架構合理搭配,最好一個架構對應一個使用者名稱,方便後期規範和維護
2、說完資料庫的許可權下面當然是主要儲存資料,資料怎麼存,應該怎麼規範,索引如何建立,後期資料量超大,該怎麼分區,相信這些都是很多小夥伴心中的難題
(1)怎麼儲存資料和規範資料? 作為一個資料庫的設計者,首先在資料量的問題上不要止步於眼前的資料量,而是儘可能的最大評估資料量,甚至超出十倍百倍的評估資料量,對資料庫進行設計,然後規範資料:提煉需要儲存的資料,盡量減少沉於資料,然後對操作頻繁的表進行合理的建立索引。這樣對於前期資料庫搭建這樣浩瀚的工程就算完成了。當然我這建庫說的不是很詳細,比如每一個表都要有唯一主鍵或者混合主鍵、資料庫檔案放在那裡等這些我就不一一說了。
當然在這裡小何告訴大家一個小常識:設計資料庫理最好不能有物理刪除的就是我們常說DELETE,而是用刪除標誌代替DELETE。在這就不要問我為什麼了,好不好大家用了就知道了
(2)如何建立索引? 這個大家不要覺得就是誰便建立一個索引就好了,小何在這裡就告訴大家 不是這樣的,大家覺得上億的的資料多嗎?查詢是不是很頭疼? 小何告訴大家近億的資料查詢秒秒鐘的事情,當然這裡不是全部查出來,而是按照某個條件查詢少量的資料了。知道為啥那麼牛逼嗎?就是應為我索引建的好。經常看到很多人在網上發表說百萬千萬的資料量都在說很大了,我說,你們可以好好研究下索引的,而不是什麼分區更有甚者說資料倉儲能解決這個問題。
(3)什麼時候時候分區??該怎麼分區?一般一個表資料超過10G就可以分區了,這樣查詢也會快些,而且也方便管理。
分區的方法主要有三種 定界分割 、Hash分區(散列分區) 、複合分區
定界分割就是對資料表中的某個值的範圍進行分區,根據某個值的範圍,決定將該資料存放區在哪個分區上。如根據序號分區,根據業務記錄的建立日期進行分區等。 不好之處就是後期可能造成分布不均勻維護成本增加
Hash分區(散列分區)為通過指定分區編號來均勻分布資料的一種分區類型,因為通過在I/O裝置上進行散列分區,使得這些分區大小一致。
複合分區 有時候我們需要根據定界分割後,每個分區內的資料再散列地分布在幾個資料表空間中,這樣我們就要使用複合分區。複合分區是先使用定界分割,然後在每個分區內再使用散列分區的一種分區方法,如將物料交易的記錄按時間分區,然後每個分區中的資料分三個子分區,將資料散列地儲存在三個指定的資料表空間中
小何的資料庫淺談就到這裡了!!!!!!
下面給大家供應商一些資料庫調優方向看到此文章的夥伴能有一些方向
1、儲存 將硬碟分成NTFS格式,NTFS比FAT32快,並看你的資料檔案大小,1G以上你可以採用多資料庫檔案,這樣可以將存取負載分散到多個物理硬碟或磁碟陣列上。
2、tempdb tempdb也應該被單獨的物理硬碟或磁碟陣列上,建議放在RAID 0上,這樣它的效能最高,不要對它設定最大值讓它自動成長
3、記錄檔 記錄檔也應該和資料檔案分開在不同的理硬碟或磁碟陣列上,這樣也可以提高硬碟I/O效能。
4、分區視圖 就是將你的資料水平分割在叢集伺服器上,它適合大規模OLTP,SQL群集上,如果你資料庫不是訪問特別大不建議使用。
5、簇索引 你的表一定有個簇索引,在使用簇索引查詢的時候,區塊查詢是最快的,如用between,應為他是物理連續的,你應該盡量減少對它的updaet,應為這可以使它物理不連續。
6、非簇索引 非簇索引與物理順序無關,設計它時必須有高度的可選擇性,可以提高查詢速度,但對錶update的時候這些非簇索引會影響速度,且佔用空間大,如果你願意用空間和修改時間換取速度可以考慮。
7、索引檢視表 如果在視圖上建立索引,那視圖的結果集就會被儲存起來,對與特定的查詢效能可以提高很多,但同樣對update語句時它也會嚴重減低效能,一般用在資料相對穩定的資料倉儲中。
8、維護索引 你在將索引建好後,定期維護是很重要的,用dbcc showcontig來觀察頁密度、掃描密度等等,及時用dbcc indexdefrag來整理表或視圖的索引,在必要的時候用dbcc dbreindex來重建索引可以受到良好的效果。
不論你是用幾個表1、2、3點都可以提高一定的效能,5、6、8點你是必須做的,至於4、7點看你的需求。
資料庫管理及最佳化淺談(MS SQL Server)