大數據量系統的數據庫結構設計

一、把你表中常常查詢的和不經常使用的分開幾個表,也就是橫向切分數據庫

二、把不一樣類型的分紅幾個表,縱向切分服務器

三、經常使用聯接的建索引性能

四、服務器放幾個硬盤,把數據、日誌、索引分盤存放,這樣能夠提升IO吞吐率測試

五、用優化器,優化你的查詢大數據

六、考慮冗餘,這樣能夠減小鏈接優化

七、能夠考慮創建統計表,就是實時生成總計表,這樣能夠避免每次查詢都統計一次設計

八、用極量數據測試一下 數據倉庫解決的是數據挖掘,共享,和大數據量存儲有什麼根本關係?日誌

mrzxc 等說的好,考慮你的系統,注意負載平衡,查詢優化,25 萬並不大,能夠建一個表,而後按mrzxc 的3 4 5 7 優化。 速度,影響它的因數太多了,且數據量越大越明顯。索引

一、存儲 將硬盤分紅NTFS格式,NTFS比FAT32快,並看你的數據文件大小,1G以上你能夠採用多數據庫文件,這樣能夠將存取負載分散到多個物理硬盤或磁盤陣列上。數據挖掘

二、tempdb tempdb也應該被單獨的物理硬盤或磁盤陣列上,建議放在RAID 0上,這樣它的性能最高,不要對它設置最大值讓它自動增加

三、日誌文件 日誌文件也應該和數據文件分開在不一樣的理硬盤或磁盤陣列上,這樣也能夠提升硬盤I/O性能。

四、分區視圖 就是將你的數據水平分割在集羣服務器上,它適合大規模OLTP,SQL羣集上,若是你數據庫不是訪問特別大不建議使用。

五、簇索引 你的表必定有個簇索引,在使用簇索引查詢的時候,區塊查詢是最快的,如用between,應爲他是物理連續的,你應該儘可能減小對它的updaet,應爲這可使它物理不連續。

六、非簇索引 非簇索引與物理順序無關,設計它時必須有高度的可選擇性,能夠提升查詢速度,但對錶update的時候這些非簇索引會影響速度,且佔用空間大,若是你願意用空間和修改時間換取速度能夠考慮。

七、索引視圖 若是在視圖上創建索引,那視圖的結果集就會被存儲起來,對與特定的查詢性能能夠提升不少,但一樣對update語句時它也會嚴重減低性能,通常用在數據相對穩定的數據倉庫中。

八、維護索引 你在將索引建好後,按期維護是很重要的,用dbcc showcontig來觀察頁密度、掃描密度等等,及時用dbcc indexdefrag來整理表或視圖的索引,在必要的時候用dbcc dbreindex來重建索引能夠受到良好的效果。 不論你是用幾個表一、二、3點均可以提升必定的性能,五、六、8點你是必須作的,至於四、7點看你的需求,我我的是不建議的。

相關文章
相關標籤/搜索