2017-10-17 73 views
1

數據庫通常是大多數應用程序的存儲空間。我們公司每天都會對這些數據進行大量的計算和數據處理。按用途劃分的SQL Server數據庫

只要我們獲得越來越多的數據,數據生成就成了一個問題原因花費太長時間。我認爲將數據庫分成至少兩個是有意義的:

  • 用於存儲數據,重點是讀/寫性能;

  • 用於計算重點是數據聚合性能。

有沒有人有類似的經驗,可以告訴如果這個想法是好的,什麼是設計差異提到的兩點?

也許有必要尋找一個用於計算數據的noSQL解決方案,例如內存數據庫?

+1

看一看SQL SSAS進行計算和aggragation – RegBes

+0

@RegBes你說的是添加度量計算?它快嗎?我可以嘗試... – Almazini

+0

@RegBes不知道它是否會工作..因爲沒有太多的經驗。我們這一代有幾十個計算步驟。那麼我需要創建一個依賴前一個的計算方法鏈嗎? – Almazini

回答

1

它可以是有意義的獨立的數據庫中至少兩個

如果數據庫在不同的磁盤(使用不同的主軸),它可以幫助否則你就沒有收穫,因爲磁盤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速度,您將獲得高性能

+0

謝謝M.Hassan給出了這麼大的答案!將嘗試所有的建議。正在接受檢查 – Almazini

+0

歡迎和快樂的一天。 –