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


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

2、把不同類型的分成幾個表,縱向切分

3、常用聯接的建索引

4、服務器放幾個硬盤,把數據、日志、索引分盤存放,這樣可以提高IO吞吐率

5、用優化器,優化你的查詢

6、考慮冗余,這樣可以減少連接

7、可以考慮建立統計表,就是實時生成總計表,這樣可以避免每次查詢都統計一次

8、用極量數據測試一下 數據倉庫解決的是數據挖掘,共享,和大數據量存儲有什么根本關系?

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

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點看你的需求,我個人是不建議的。打了半個多小時想是在寫論文,希望對你有幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM