數據庫通常是大多數應用程序的存儲空間。我們公司每天都會對這些數據進行大量的計算和數據處理。按用途劃分的SQL Server數據庫
只要我們獲得越來越多的數據,數據生成就成了一個問題原因花費太長時間。我認爲將數據庫分成至少兩個是有意義的:
用於存儲數據,重點是讀/寫性能;
用於計算重點是數據聚合性能。
有沒有人有類似的經驗,可以告訴如果這個想法是好的,什麼是設計差異提到的兩點?
也許有必要尋找一個用於計算數據的noSQL解決方案,例如內存數據庫?
數據庫通常是大多數應用程序的存儲空間。我們公司每天都會對這些數據進行大量的計算和數據處理。按用途劃分的SQL Server數據庫
只要我們獲得越來越多的數據,數據生成就成了一個問題原因花費太長時間。我認爲將數據庫分成至少兩個是有意義的:
用於存儲數據,重點是讀/寫性能;
用於計算重點是數據聚合性能。
有沒有人有類似的經驗,可以告訴如果這個想法是好的,什麼是設計差異提到的兩點?
也許有必要尋找一個用於計算數據的noSQL解決方案,例如內存數據庫?
它可以是有意義的獨立的數據庫中至少兩個
如果數據庫在不同的磁盤(使用不同的主軸),它可以幫助否則你就沒有收穫,因爲磁盤IO之間共享這些數據庫。
對於最佳實踐,閱讀Storage Top 10 Best Practices
也許這是值得尋找的NoSQL解決方案,例如計算數據內存數據庫?
沒有必要去的NoSQL解決方案,您可以使用內存中的表 在內存OLTP可以顯著提高交易處理,數據加載和瞬態數據方案的性能。
有關詳細信息,In-Memory OLTP (In-Memory Optimization)
其它策略
1)調tempdb的
Tempdb中是很常見的所有數據庫和計算中大量使用。
更實用的方法是在文件和邏輯CPU(核心)之間建立1:1的映射,最多爲8個。
瞭解更多詳情:SQL Server TempDB Usage, Performance, and Tuning Tips
2)評估壽命(PLE)計數器,並採取措施對增強
評估數據緩存,運行以下查詢
SELECT [object_name],
[counter_name],
[cntr_value] FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'
的推薦值的PLE計數器(以秒爲單位)大於:
total_memory_dedicated_for_sql_server/4 * 300
頁面預期壽命是頁面將保留在沒有引用的緩衝池中的秒數。簡單地說,如果你的頁面在緩衝池(內存緩存的區域)中的停留時間更長,那麼你的PLE就會更高,因爲每次請求到達時都會有更高的性能,所以它有可能在緩存本身中找到它的數據,而不是去讀取數據的硬盤。
如果PLE不夠增加內存並調整索引和統計。
3)使用SSD磁盤
隨着固態盤(SSD)的下降的成本,使用固態硬盤作爲高速緩存的第二層。
4)使用RAID 5作爲數據庫;和用於事務日誌和tempdb的RAID 10。
通常,SQL優化器遊戲正在將數據從磁盤(低速)移動到緩存(內存高速)。
增加內存和提高diskIo速度,您將獲得高性能
謝謝M.Hassan給出了這麼大的答案!將嘗試所有的建議。正在接受檢查 – Almazini
歡迎和快樂的一天。 –
看一看SQL SSAS進行計算和aggragation – RegBes
@RegBes你說的是添加度量計算?它快嗎?我可以嘗試... – Almazini
@RegBes不知道它是否會工作..因爲沒有太多的經驗。我們這一代有幾十個計算步驟。那麼我需要創建一個依賴前一個的計算方法鏈嗎? – Almazini