你是否在排查執行緩慢的 web 應用程式時懷疑是資料庫層造成的?以前排查資料庫層需要特定的工具,現在可以使用 Visual Studio 的 Performance Explorer 中的資料庫分析工具快速而輕鬆地排查。
當談到診斷 web 應用程式的效能時,我們在與開發人員的數十次交談中瞭解到,應用程式的資料庫層通常是導致應用程式執行緩慢的主要原因。然而,大多數解決方案都需要安裝單獨的工具、收集大量的SQL跟蹤或修改應用程式程式碼來獲得所需的資訊。
為了使這個過程不那麼繁瑣和複雜,我們在 Visual Studio 的 Performance Profiler 中開發了 Database tool,以幫助你深入瞭解應用程式的資料庫層。你可以確切地看到在應用程式執行期間發生了哪些資料庫活動的有用資訊,比如哪些查詢和事務執行的時間最長,每個查詢使用的連線字串,以及可能最重要的是,這些查詢在程式碼中的何處生成。
下面看一個簡單示例,瞭解如何使用該工具定位程式碼與資料庫互動的位置,並對其進行效能改進。
使用工具
以微軟的 eShopOnWeb 為例,本地部署後執行站點,並花點時間加一些商品到購物車。
即使使用瀏覽器的開發人員工具,也無法準確地識別資料庫查詢什麼時候發生,或者它是否會在操作(如上圖所示的篩選目錄)期間造成延遲。使用 Database tool,我們可以捕獲在任何使用者操作期間發生的確切資料庫活動,並進行進一步研究。
要做到這一點,我們只需開啟 Performance Profiler,在Visual Studio 中通過點選 Debug > Performance Profiler 或使用快捷鍵 Alt + F2 開啟,然後勾選“Database”核取方塊來啟用該工具。要獲得更準確的配置,需要以 Release 配置而不是 Debug 執行應用程式。然後單擊 Start 啟動並開始分析應用程式。
以你感興趣的方式與你的應用程式進行互動,然後當你準備檢查資料時,單擊 Visual Studio 中的“Stop Collection”。
在收集停止後,Visual Studio 將快速處理收集到的資料,並生成一個圖表,顯示在分析會話期間發生的查詢,以及發生查詢的時間和數量。右鍵點選任何列標題,將顯示可以幫助你排序和分析所記錄的活動的可用列。這樣可以非常快速地發現異常,比如隻影響少數記錄的長時間執行的查詢,或者使用錯誤連線字串的查詢。
在確定了需要進一步研究的查詢之後,想要查詢該查詢在程式碼中的何處發生,只需右鍵點選該行並選擇“Go To Source File”。
只要有可能,該工具就會立即得到執行查詢的程式碼行或程式碼塊,從而省去了挖掘複雜程式碼庫的繁瑣任務。
試一試
這個特性可以在 Visual Studio 2019 16.3 或更高版本中找到,並且支援使用 ADO.NET 或 Entity Framework Core 的 .NET Core 專案。這個工具還支援 dotnet trace,這意味著我們可以在 .NET Core 執行的任何地方收集資料(包括Linux!),並在 Visual Studio 中分析這些資料。
原文連結
https://devblogs.microsoft.com/visualstudio/database-profiling-with-visual-studio/