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點看你的需求,我個人是不建議的。打了半個多小時想是在寫**,希望對你有幫助。
大資料量的系統的資料庫結構如何設計?
1 把你表中經常查詢的和不常用的分開幾個表,也就是橫向切分 2 把不同型別的分成幾個表,縱向切分 3 常用聯接的建索引 4 伺服器放幾個硬碟,把資料 日誌 索引分盤存放,這樣可以提高io吞吐率 5 用優化器,優化你的查詢 6 考慮冗餘,這樣可以減少連線 7 可以考慮建立統計表,就是實時生成總計表,這...
如何優化操作大資料量資料庫(幾十
聚集索引的重要性和如何選擇聚集索引 在上一節的標題中,筆者寫的是 實現小資料量和海量資料的通用分頁顯示儲存過程。這是因為在將本儲存過程應用於 辦公自動化 系統的實踐中時,筆者發現這第三種儲存過程在小資料量的情況下,有如下現象 1 分頁速度一般維持在1秒和3秒之間。2 在查詢最後一頁時,速度一般為5秒...
如何實現資料庫中的大資料量在redis中高效率使用
redis基於記憶體,查詢速度快 快的原因 1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避...