簡體   English   中英

使用LinqPad進行SQL性能調整

[英]SQL performance tuning with LinqPad

我是DBA和軟件工程師,負責管理SQLServer 2016企業數據庫。 應用程序Sql是用EntityFramework而不是存儲過程編寫的。

DBA是否應該在Linqpad中放置團隊的EF查詢以調整開發性能? 我上周了解了LinqPad,並驚訝於它如何將Linq查詢轉換為SQL。 有時,Linq查詢是不可預測的/隨機的(MS仍在致力於產品改進)。 這樣,我不必等待臨時查詢即可在暫存或生產環境中命中SQLServer Profiler。 在sprint開發期間,我可以與應用程序開發人員一起進行調整。

這是性能調整的合適策略嗎? 我讀了許多SQL博客,但是沒有人討論LinqPad策略。 只是詢問這是否對性能優化有用。

您提到您的開發人員正在使用實體框架。 請注意,默認情況下,LINQPad使用LINQ-to-SQL將LINQ表達式樹轉換為SQL查詢。 由於LINQ-to-SQL和EF不一定生成相同的SQL輸出,因此您需要遵循文檔中將LINQPad與Entity Framework結合使用的步驟,以確保它使用EF來創建SQL。

但是,即使將LINQPad配置為使用EF,仍然有機會最終調整與應用程序生成的查詢不同的查詢。 例如,如果應用程序中使用的實體數據模型與配置LINQPad時選擇的實體數據模型不同。 或者,如果您的應用程序和LINQPad使用的是其他版本的EF等。

對於您的開發人員而言,查看和性能測試特定查詢的一種更可靠的方法是配置Entity Framework,以將生成的SQL記錄到某處-甚至可以在Visual Studio的“調試輸出”窗口中查看該MSDN博客文章: 如何查看實際的實體框架生成的SQL查詢

如果他們擁有要使用的本地數據庫或對dev SQL Server實例具有適當的權限,則他們也可以運行sp_BlitzCache來跟蹤由Entity Framework生成的任何討厭的查詢。

LINQPad絕對是查看您的LINQ表達式如何轉換為SQL查詢的好方法。 它有助於獲得關於從哪種LINQ擴展方法中提取什么SQL的直觀認識。 但是,如果您嘗試查看和調整由應用程序生成的查詢,則它可能不是工作的最佳工具。

暫無
暫無

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

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