共用方式為


判斷是否應將資料表或預存程序匯出至記憶體中 OLTP

SQL Server Management Studio中的交易效能收集器可協助您評估In-Memory OLTP 是否會改善資料庫應用程式的效能。 交易效能分析報表還會指出應用程式啟用記憶體中 OLTP 所需執行的工作。 識別您要匯出至記憶體內部 OLTP 的磁碟資料表之後,即可使用 記憶體最佳化建議程式協助您遷移資料表。 同樣地, Native Compilation Advisor 可協助您將預存程序匯出為原生編譯的預存程序。

本主題將討論如何執行以下工作:

  • 設定管理資料倉儲。

  • 設定資料收集。

  • 產生交易效能分析報表來識別效能關鍵的資料表和預存程序。

如需移轉方法的資訊,請參閱 In-Memory OLTP - 一般工作負載模式和移轉考量

交易效能收集器和交易效能分析報表將協助您完成下列工作:

  • 分析您的工作負載,判斷記憶體中 OLTP 是否可改善效能。 交易效能收集器會收集和評估您的工作負載的效能特性。 . 交易效能分析報表接著會建議轉換成記憶體中 OLTP 後獲益最多的資料表和預存程序。

  • 協助您規劃及執行移轉為記憶體中 OLTP 的作業。 從磁碟資料表移轉到記憶體最佳化資料表,其間的移轉路徑可能會很費時。 記憶體最佳化 Advisor 可協助您識別將資料表移至記憶體中 OLTP 之前必須先從資料表移除的不相容項目。 記憶體最佳化 Advisor 也可協助您了解將資料表移轉到記憶體最佳化的資料表時,將對應用程式造成什麼影響。

    當您想要規劃移轉至記憶體中 OLTP 的作業,以及想要將部分資料表和預存程序移轉至記憶體中 OLTP 時,都可以檢查您的應用程式能否獲益於記憶體中 OLTP。

    重要

    資料庫系統的效能取決於各種不同的因素,並不是所有因素都可由交易效能收集器來觀察和測量。 因此,交易效能分析報表不保證實際的效能增益將會符合預測 (如果進行了任何預測)。

當您在安裝 SQL Server 2019 (15.x) 時,選取 [管理工具-基本] 或 [管理工具-進階] 時,就會安裝交易效能分析報告,以及產生交易效能分析報表的能力。

最佳做法

建議的工作流程如以下流程圖所示。 黃色節點代表選用程序:

AMR 工作流程

您可以使用任何方法來建立效能基準,包括但不限於使用效能計數器記錄或SQL Server活動監視器。 您的效能基準和比較中所要使用的資訊包括:

  • SQL Server的 CPU 耗用量。

  • SQL Server的記憶體耗用量。

  • SQL Server的 I/O 活動。

  • 在處理交易時的執行個體交易輸送量。

交易效能收集器每隔 15 分鐘擷取一次資料。 為了取得實用的結果,請執行交易效能收集器至少一個小時。 為了取得最佳結果,請讓交易效能收集器有充裕的執行時間,以擷取主要案例所需的資料。 唯有在您完成資料的收集之後,再產生交易效能分析報表。

將交易效能收集器設定為在生產環境中的SQL Server實例上執行,並在開發 (測試) 環境中收集SQL Server實例的資料,以確保最少的額外負荷。 如需如何在遠端SQL Server實例的管理Data Warehouse資料庫中儲存資料的資訊,請參閱在遠端SQL Server實例上設定資料收集

效能影響

交易效能收集器是由兩個資料收集組所組成:

  • 資料表使用分析

  • 預存程序分析

收集組每隔十五分鐘會從三個動態管理檢視 (DMV) 收集資料,並將資料上傳到設定為當做管理資料倉儲的資料庫。 上傳收集的資料對於效能的影響很低。

使用交易效能收集器

下列步驟需要在 SQL Server 2019 (15.x) 中SQL Server Management Studio。

重要

請勿在分析期間變更結構描述 (例如,新增或移除資料庫,或建立或卸除資料表)。 如果您在收集資料時變更資料庫的結構描述,納入報表中的資料庫可能會不準確。

設定管理資料倉儲

管理資料倉儲必須設定為使用交易效能收集器。

您將在 (設定檔) 上收集資料的 SQL Server 實例版本應該與設定管理 SQL Server Data Warehouse相同的版本或較舊版本。

  1. 在物件總管中,展開 [管理]。

  2. 以滑鼠右鍵按一下[資料收集],然後選取 [工作],然後選取 [設定管理] Data Warehouse。 [設定管理Data Warehouse精靈] 隨即開始。

  3. 按一下[下一步] 以選取將作為管理Data Warehouse的資料庫。

  4. 按一下 [新增 ] 以建立新的資料庫來保存設定檔資料。 完成建立資料庫之後,請按一下精靈中的 [ 下一步 ]。

  5. 精靈中的下一個步驟可讓您加入使用者和登入。 您可以將登入對應到 MDW 執行個體的角色成員資格。 從本機執行個體收集資料並不一定要這樣做。 如果您不是從本機執行個體收集資料,您可以將資料庫角色成員資格 mdw_admin 授與將執行即將分析之交易的帳戶。 完成時,按一下 [下一步]。

  6. 請確定SQL Server Agent正在執行。

  7. 在下一個畫面上,按一下 [ 完成] 結束精靈。

在本機SQL Server實例上設定資料收集

資料收集需要啟動SQL Server Agent。 您只需要在伺服器上設定一個資料收集器。

資料收集器可以在 SQL Server 2012 或更新版本的 SQL Server上設定。

若要設定資料收集,以便上傳至相同執行個體上的管理資料倉儲資料庫:

  1. 物件總管中,展開[管理]。

  2. 以滑鼠右鍵按一下 [資料收集],選取 [ 工作],然後選取 [ 設定資料收集]。 [ 設定資料收集精靈 ] 隨即開始。

  3. 按一下 [下一步 ] 以選取將收集設定檔資料的資料庫。

  4. 選取目前的SQL Server實例,以及該實例上的管理Data Warehouse資料庫。

  5. 在標示 為 [選取您想要啟用的資料收集器集合] 方塊中,選取 [交易效能收集組]。 完成時按 [下一步]

  6. 驗證選取項目。 按一下 [上一步 ] 以修改設定。 完成時,按一下 [ 完成 ]。

在遠端 SQL Server 執行個體上設定資料收集

資料收集需要SQL Server Agent在將收集資料的實例上啟動。

資料收集器可以在 SQL Server 2012 或更新版本的 SQL Server上設定。

您需要以正確的認證建立SQL Server Agent Proxy,以便資料收集器將資料上傳至實例上的 Management Data Warehouse 資料庫,該實例與交易將剖析的位置不同。 若要啟用SQL Server Agent Proxy,您必須先使用已啟用網域的登入來建立認證。 具有網域功能的登入必須是管理資料倉儲資料庫的 mdw_admin 群組成員。 如需如何建立認證的詳細資訊,請參閱如何:建立認證 (SQL Server Management Studio)

若要設定資料收集,以便上傳至不同執行個體上的管理資料倉儲資料庫:

  1. 在實例上,包含您想要移轉至 In-Memory OLTP 的磁片物件,展開 物件總管 中的[管理] 節點。

  2. 以滑鼠右鍵按一下 [資料收集 ],然後選取 [ 工作 ],然後選取 [ 設定資料收集]。 [ 設定資料收集精靈 ] 隨即開始。

  3. 按一下 [下一步 ] 以選取將收集設定檔資料的資料庫。

  4. 請確定管理Data Warehouse資料庫存在於其他SQL Server實例上。

  5. 選取另一個SQL Server實例,以及該實例上的管理Data Warehouse資料庫。

    您將在 (設定檔) 上收集資料的 SQL Server 實例版本應該與設定管理 SQL Server Data Warehouse相同的版本或較舊版本。

  6. 在標示 為 [選取您想要啟用的資料收集器集合] 方塊中,選取 [交易效能收集組]。

  7. 選取[針對遠端上傳使用SQL Server Agent Proxy]。

  8. 完成時按 [下一步]

  9. 選取 Proxy。

    如果您想要建立新的 SQL Server Agent Proxy,

    1. 按一下 [新增 ] 以顯示 [ 新增 Proxy 帳戶 ] 對話方塊。

    2. 在 [ 新增 Proxy 帳戶 ] 對話方塊中,輸入 Proxy 的名稱、選取認證,並選擇性地輸入描述。 然後按一下 [主體]。

    3. 按一下 [新增 ],然後選取 [Msdb 角色]。

    4. 選取 dc_proxy 並按一下 [ 確定]。 然後再按一下 [確定]

    選取正確的 Proxy 之後,請按 [ 下一步]。

  10. 若要設定系統收集組,請檢查 [系統收集組 ],然後按 [ 下一步]。

  11. 驗證選取項目。 按一下 [上一步 ] 以修改設定。 完成時,Clicck Finish

資料收集組現在應該已經設定妥,並且正在您的執行個體上執行。

產生報表

您可以用滑鼠右鍵按一下 [管理] Data Warehouse的資料庫,然後選取 [報表]、[管理Data Warehouse],然後選取 [交易效能分析概觀] 來產生交易效能分析報告。

報表會收集工作負載伺服器上所有使用者資料庫的相關資訊。 如果您的管理資料倉儲 (MDW) 資料庫位於本機電腦上,則會在報表中看見 MDW 資料庫。

CPU 時間與經過時間的比率較高的預存程序就是移轉作業的候選。 報表會顯示所有資料表參考,因為原生方式編譯預存程序只能參考記憶體最佳化資料表,而這些資料表可能會增加移轉成本。

資料表的詳細報表包含三個部分:

  • 掃描統計資料部分

    此部分包含單一資料表,將顯示所收集有關資料庫資料表上掃描次數的統計資料。 資料行如下:

    • 總存取數百分比。 整個資料庫活動中,此資料表上掃描次數與搜尋次數百分比。 此百分比愈高,表示與資料庫中的其他資料表相較下,較大量使用此資料表。

    • 查閱統計資料/範圍掃描統計資料。 此資料行記錄分析期間,資料表上執行的點查閱及範圍掃描 (索引掃描及資料表掃描) 數。 每筆交易的平均值為預估。

    • Interop 改善和原生改善。 這些資料行可預估當資料表轉換成記憶體最佳化資料表時,點查閱或範圍掃描將會得到的效能獲益量。

  • 競爭統計資料部分

    此部分包含在資料庫資料表上顯示競爭的資料表。 如需資料庫閂鎖和鎖定的詳細資訊,請參閱 鎖定架構。 資料行如下:

    • 總等候次數百分比。 與資料庫活動相比,此資料庫資料表上閂鎖和鎖定等候數的百分比。 此百分比愈高,表示與資料庫中的其他資料表相較下,較大量使用此資料表。

    • 閂鎖統計資料。 這些資料行記錄關於此資料表查詢的閂鎖等候數。 如需閂鎖的資訊,請參閱 閂鎖。 此數字越高,表示資料表有越多閂鎖競爭。

    • 鎖定統計資料。 此資料行群組記錄頁面鎖定取得數以及查詢此資料表的等候數。 如需鎖定的詳細資訊,請參閱瞭解SQL Server中的鎖定。 等候數越多,表示資料表上越多鎖定競爭。

  • 移轉難度部分

    此部分包含顯示將此資料庫資料表轉換成記憶體最佳化資料表之難度的資料表。 較高的難度評等表示較難轉換資料表。 若要查看轉換此資料庫資料表的詳細資料,請使用 記憶體優化建議程式

會從 transact-SQL) 收集資料表詳細資料的掃描和爭用統計資料,並從 sys.dm_db_index_operational_stats (匯總。

預存程序的詳細資料報表包含兩個部分:

  • 執行統計資料部分

    此部分包含的資料表將顯示所收集有關預存程序之執行的統計資料。 資料行如下:

    • 快取的時間。 此執行計畫快取的時間。 如果預存程序從計畫快取卸除並重新輸入,每個快取都需要時間。

    • 總 CPU 時間。 在分析期間,預存程序所耗用的總 CPU 時間。 此數字愈高,預存程序使用的 CPU 越多。

    • 總執行時間。 在分析期間,預存程序使用的總執行時間量。 此數字和 CPU 時間之間的差異愈高,預存程序使用 CPU 的效率越低。

    • 快取遺漏總數。 在分析期間,預存程序的執行所導致的快取遺漏數 (從實體儲存體讀取)。

    • 執行計數。 在分析期間,此預存程序執行的次數。

  • 資料表參考部分

    此部分包含的資料表是顯示此預存程序所參考的資料表。 將預存程序轉換至原生方式編譯預存程序之前,必須將所有這些資料表轉換為記憶體最佳化資料表,且必須放置在相同的伺服器和資料庫上。

預存程式詳細資料的執行統計資料會從 sys.dm_exec_procedure_stats (Transact-SQL) 收集並匯總。 參考取自 sys.sql_expression_dependencies (Transact-SQL)

若要查看如何將預存程式轉換成原生編譯預存程式的詳細資料,請使用 Native Compile Advisor

另請參閱

移轉至 In-Memory OLTP