In-Memory OLTP (記憶體中最佳化)
SQL Server 2014 (12.x) 的新功能,In-Memory OLTP 可以大幅改善 OLTP 資料庫應用程式效能。 In-Memory OLTP 是整合至SQL Server引擎的記憶體優化資料庫引擎,已針對 OLTP 優化。
您要試用 SQL Server 2016 嗎? 註冊 Microsoft Azure,然後移至這裡以啟動已安裝 SQL Server 2016 的虛擬機器。 完成時,您可以刪除虛擬機器。 |
若要使用 In-Memory OLTP,請將高度存取的資料表定義為記憶體優化。 記憶體優化資料表是完全交易式、持久性,而且使用 Transact-SQL 存取的方式與磁片資料表相同。 查詢可以參考記憶體最佳化資料表和以磁碟為基礎的資料表。 交易可以更新記憶體最佳化資料表和以磁碟為基礎的資料表中的資料。 僅參考記憶體最佳化資料表的預存程序可原生編譯為機器碼,以進一步提升效能。 In-Memory OLTP 引擎是針對從高度向外延展仲介層驅動之 OLTP 交易類型的極高會話並行而設計。 為達成此目的,它使用了不需閂鎖的資料結構,以及開放式、多版本的並行控制。 結果是可針對資料庫交易進行線性比例調整來產生可預期、亞毫秒低延遲及高輸送量。 實際效能獲益取決於許多因素,但通常可以獲得 5 到 20 倍的效能提升。
下表摘要說明使用 OLTP In-Memory可能最受益的工作負載模式:
實作案例 | 實作案例 | In-Memory OLTP 的優點 |
---|---|---|
來自多個並行連接的高度資料插入比率。 | 主要的附加專用存放區。 跟不上插入工作負載。 |
排除競爭。 減少記錄。 |
定期批次插入和更新的讀取效能與比例調整。 | 高效能讀取作業,特別是在每個伺服器要求都有數個讀取作業要執行時。 無法符合相應增加的要求。 |
在新資料到達時排除競爭。 較低延遲的資料擷取。 將程式碼執行時間縮到最短。 |
資料庫伺服器中密集的商務邏輯處理。 | 插入、更新及刪除工作負載。 預存程序內部的大量計算。 讀寫競爭。 |
排除競爭。 將程式碼執行時間縮到最短,以減少延遲並提高輸送量。 |
低度延遲。 | 要求一般資料庫解決方案無法達成的低度延遲商務交易。 | 排除競爭。 將程式碼執行時間縮到最短。 低度延遲的程式碼執行。 有效率的資料擷取。 |
工作階段狀態管理。 | 經常性插入、更新及點查閱。 從許多無狀態的 Web 伺服器大範圍載入。 |
排除競爭。 有效率的資料擷取。 使用非持久性的資料表時,選擇性地減少或移除 IO |
如需In-Memory OLTP 會導致最大效能提升之案例的詳細資訊,請參閱 記憶體內部 OLTP - 常見的工作負載模式和移轉考慮。
記憶體中 OLTP 對於執行短期交易的 OLTP 效能改善最有利。
In-Memory OLTP 的程式設計模式會改善包括並行案例、點查閱、有許多插入和更新的工作負載,以及預存程式中的商務邏輯。
與SQL Server整合表示您可以在相同的資料庫中同時擁有記憶體優化資料表和磁片資料表,以及跨這兩種類型的資料表進行查詢。
在 SQL Server 2014 (12.x) In-Memory OLTP 支援 Transact-SQL 介面區有一項限制。
In-Memory OLTP 使用下列專案來達到顯著的效能和延展性提升:
為存取記憶體駐留的資料最佳化的演算法。
消除邏輯鎖定的開放式並行存取控制。
不需鎖定的物件,可消除所有實體的鎖定與閂鎖。 執行交易式工作的執行緒不會針對並行控制使用鎖定或閂鎖。
原生編譯的預存程序,在存取記憶體最佳化資料表時,其效能明顯優於解譯的預存程序。
重要
您需要在資料表和預存程序中進行一些語法變更,才能使用 In-Memory OLTP。 如需詳細資訊,請參閱移轉至記憶體內部 OLTP。 在您嘗試將磁片資料表移轉至記憶體優化資料表之前,請閱讀 判斷資料表或預存程式是否應移植到In-Memory OLTP ,以查看哪些資料表和預存程式會受益于In-Memory OLTP。
本節內容
本節提供下列概念的相關資訊:
主題 | 描述 |
---|---|
使用記憶體最佳化資料表的需求 | 討論有關使用記憶體最佳化資料表的硬體和軟體需求以及方針。 |
在 VM 環境使用記憶體中的 OLTP | 涵蓋在虛擬化環境中使用記憶體中的 OLTP。 |
記憶體內部 OLTP 程式碼範例 | 包含程式碼範例,示範如何建立及使用記憶體最佳化資料表。 |
記憶體最佳化資料表 | 介紹記憶體最佳化的資料表。 |
記憶體最佳化資料表變數 | 程式碼範例,示範如何使用記憶體最佳化的資料表變數取代傳統資料表變數,以減少 tempdb 的使用量。 |
記憶體最佳化資料表上的索引 | 介紹記憶體最佳化索引。 |
原生編譯的預存程序 | 介紹原生編譯的預存程序。 |
為記憶體內部 OLTP 管理記憶體 | 了解及管理系統上的記憶體使用量。 |
建立及管理記憶體最佳化物件的儲存體 | 討論資料與差異檔案 (儲存記憶體最佳化之資料表中的交易資訊)。 |
備份、還原及復原記憶體最佳化資料表 | 討論記憶體最佳化資料表的備份、還原及復原。 |
記憶體內部 OLTP 的 Transact-SQL 支援 | 討論 In-Memory OLTP 的 Transact-SQL 支援。 |
記憶體內部 OLTP 資料庫的高可用性支援 | 討論 In-Memory OLTP 中的可用性群組和容錯移轉叢集。 |
記憶體中 OLTP 的 SQL Server 支援 | 列出為支援記憶體最佳化資料表新增和更新的語法和功能。 |
移轉至 In-Memory OLTP | 討論如何將以磁碟為基礎的資料表移轉到記憶體最佳化的資料表。 |
有關 In-Memory OLTP 的詳細資訊可於下列位置取得: