SSAS - 最佳實踐和性能優化(3)

問題

有幾個方面可能會影響分析服務cube的性能。比如,源系統,cube和MDX查詢的設計,網絡問題。在這一節,將討論在設計和開發分析服務多維數據集時應該考慮的一些最佳實踐。

解決方案

在本系列的第1部分中,我們討論了典型的SSAS應用程序架構和SSAS內部架構的不同組件,以及不同組件和區域對性能改進所扮演的角色。在原文第2部分中,討論了源系統設計和網絡考慮,翻譯版中刪除了這一部分內容。在第2部分中,談到了多維數據集設計和開發。在本文中,將與您分享服務器資源和報表服務的最佳實踐和性能優化技術。

服務器資源優化

在本節中,將討論一些SSAS實例屬性,這些屬性將影響多維數據集處理和查詢響應的總體性能。

在SSAS中線程或並行處理

SSAS被設計成並行執行它的操作,因此它可以創建多個線程來並行執行多個請求。由於創建和銷燬線程是一項昂貴的事務,SSAS維護了兩組工作線程池,以返回當前未使用的線程,因此SSAS可以再次將它們用於服務其他請求。這兩個池稱爲查詢線程池和進程線程池。

如果你還記得本系列的第一節介紹的SSAS架構.XMLA偵聽器偵聽傳入的請求,並創建(或者使用查詢線程池中空閒的線程)查詢線程檢查數據/計算公式引擎緩存。如果緩存中沒有想要的數據,XMLA偵聽器創建或使用一個處理線程來從存儲引擎緩存或磁盤中檢索數據。進程線程還會將在從磁盤檢索到的數據存儲到存儲引擎緩存中,同時查詢線程將聚合數據存儲到公式引擎緩存中以服務將來的查詢。

因此,現在我們瞭解了SSAS能夠創建的線程越多,可以並行處理的請求就越多。但是,可以創建多少個線程呢?可以通過設置一些SSAS實例屬性來控制它

ThreadPool\Query\MinThreads(Max)

這兩個屬性決定了可以由SSAS創建的最小和最大查詢線程數。

ThreadPool\Process\MinThreads(Max)

這兩個屬性決定了可以由SSAS創建的最小和最大處理線程數。

OLAP\Process\BufferMemoryLimit

SSAS在事實表分區處理過程中使用緩衝區來臨時存儲數據,然後在處理結束後將數據寫到磁盤上。

OLAP\Process\AggregationMemoryLimitMin(Max)

默認的最小值爲10%,最大值爲80%。這表示可以在每個分區中創建聚合使用的最小和最大百分比的SSAS內存。如果有很多的分區在並行處理,則應該考慮將其保持在低位,以提高ProcessIndexes的性能(在每個分區中創建聚合)。

DataDir和LogDir

默認數據文件和日誌文件存儲位置。可以考慮將這些文件存儲在更快的磁盤驅動器。

Log\FlightRecorder\Enabled

默認狀態是ON,它在一個短期日誌文件中記錄SSAS活動。這個日誌對處理和查詢性能故障排除非常有用,但同時也會增加I / O開銷。所以理想情況下,應該在生產環境中設置爲OFF,並且只在需要時啓用它。

報告設計與開發

SQL Server Reporting Services(SSRS)是SQL Server商業智能的報表組件。可以基於任何數據源創建報表,包括SSAS。當創建SSRS報表時,應該遵循一些最佳實踐,以獲得更好的用經驗。

1.數據源級別過濾數據,而不是報表級別

2.啓用報告緩存或快照

3.爲報表創建標準或數據驅動的訂閱

4.考慮SSRS部署的擴展性

原文地址:
https://www.mssqltips.com/sqlservertip/2568/ssas–best-practices-and-performance-optimization–part-4-of-4/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章