簡體   English   中英

Azure SQL傳統基數估計無法像SQL Server 2016一樣工作

[英]Azure SQL Legacy Cardinality Estimation Not Working Like SQL Server 2016

我們在Azure Sql(Premium 500 DTU)中有兩個完全相同的數據庫(完全相同的數據,結構等),另一個在運行SQL Server 2016 SP1(8 vcore,64 GB RAM)的Azure上的VM上。 我們有一個查詢,當在數據庫級別上將“傳統基數估計”設置為OFF時,這兩個數據庫的查詢執行時間約為4分鍾。

如果我們將兩個數據庫中的“傳統基數估計”都更改為“開”,則運行SQL Server 2016 SP1的VM將在30秒內運行相同的查詢,而Azure SQL數據庫的性能甚至會更差,並且將花費近7分鍾的時間執行。

此時無法重新編寫查詢。 我希望有人可以告訴我如何獲得Azure SQL以兌現“傳統基數估計”設置,並為我提供與SQL Server 2016 SP1 VM類似的性能。

我確實注意到,在“傳統基數估計”為ON的情況下,在SQL Server 2016 SP1框中,CPU的峰值將達到高(90%+),而在Azure SQL中,DTU的百分比從未攀升到25%以上。

在Azure SQL數據庫上,將兼容性級別設置為110以啟用舊的基數估計器。

ALTER DATABASE [YourDatabase] SET COMPATIBILITY_LEVEL = 110

在查詢級別,使用以下提示。

USE HINT ( 'FORCE_LEGACY_CARDINALITY_ESTIMATION')

有關更多信息,請在此處閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM