記憶體內部 OLTP 與記憶體最佳化In-Memory OLTP and Memory-Optimization

適用範圍:Applies to: 是SQL ServerSQL Server (所有支援的版本) yesSQL ServerSQL Server (all supported versions) 是Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database適用範圍:Applies to: 是SQL ServerSQL Server (所有支援的版本) yesSQL ServerSQL Server (all supported versions) 是Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

記憶體內部 OLTPIn-Memory OLTP 可大幅提升交易處理、資料擷取和資料載入,以及暫時性資料案例的效能。can significantly improve the performance of transaction processing, data ingestion and data load, and transient data scenarios. 若要跳至快速測試您自己的記憶體最佳化資料表和原生編譯預存程序所需的基本程式碼和知識,請參閱To jump into the basic code and knowledge you need to quickly test your own memory-optimized table and natively compiled stored procedure, see

我們已將一段 17 分鐘的影片上傳到 YouTube,說明 SQL Server 上的記憶體內部 OLTP,並示範其效能優勢。We have uploaded to YouTube a 17-minute video explaining In-Memory OLTP on SQL Server, and demonstrating the performance benefits.

如需記憶體內部 OLTP 的更詳細概觀,以及檢閱案例以查看來自此技術的效能效益:For a more detailed overview of In-Memory OLTP and a review of scenarios that see performance benefits from the technology:

請注意, 記憶體內部 OLTPIn-Memory OLTPSQL ServerSQL Server 技術,可改善交易處理的效能。Note that 記憶體內部 OLTPIn-Memory OLTP is the SQL ServerSQL Server technology for improving performance of transaction processing. 如需改善報告和分析查詢效能的 SQL ServerSQL Server 技術,請參閱 資料行存放區索引指南For the SQL ServerSQL Server technology that improves reporting and analytical query performance see Columnstore Indexes Guide.

SQL Server 2016 (13.x)SQL Server 2016 (13.x)SQL Server 2017 (14.x)SQL Server 2017 (14.x)Azure SQL DatabaseAzure SQL Database 中的記憶體內部 OLTP 進行了幾項改進。Several improvements have been made to In-Memory OLTP in SQL Server 2016 (13.x)SQL Server 2016 (13.x) and SQL Server 2017 (14.x)SQL Server 2017 (14.x), as well as in Azure SQL DatabaseAzure SQL Database. 已增加 Transact-SQL 介面區,讓移轉資料庫應用程式更容易。The Transact-SQL surface area has been increased to make it easier to migrate database applications. 已新增對記憶體最佳化資料表和原生編譯預存程序的執行 ALTER 作業支援,讓維護應用程式更容易。Support for performing ALTER operations for memory-optimized tables and natively compiled stored procedures has been added, to make it easier to maintain applications.


現在就試試看Try it out

記憶體內部 OLTP 在「進階」和「商務關鍵」層 Azure SQL 資料庫和彈性集區中提供。In-Memory OLTP is available in Premium and Business Critical tier Azure SQL databases and elastic pools. 若要開始使用記憶體內部 OLTP 以及 Azure SQL Database 中的資料行存放區,請參閱 在 SQL Database 中使用記憶體內部技術最佳化效能To get started with In-Memory OLTP, as well as Columnstore in Azure SQL Database, see Optimize Performance using In-Memory Technologies in SQL Database.

本節內容In this section

本節包含下列主題:This section provides includes the following topics:

主題Topic 描述Description
快速入門 1:可讓 Transact-SQL 擁有更快效能的記憶體內部 OLTP 技術Quick Start 1: In-Memory OLTP Technologies for Faster Transact-SQL Performance 適當探討記憶體內部 OLTPDelve right into In-Memory OLTP
概觀和使用案例Overview and Usage Scenarios 記憶體內部 OLTP 是什麼,以及有哪些效能案例可看到效能效益的概觀。Overview of what In-Memory OLTP is, and what are the scenarios that see performance benefits.
使用記憶體最佳化資料表的需求Requirements for Using Memory-Optimized Tables 討論有關使用記憶體最佳化資料表的硬體和軟體需求以及方針。Discusses hardware and software requirements and guidelines for using memory-optimized tables.
記憶體內部 OLTP 程式碼範例In-Memory OLTP Code Samples 包含程式碼範例,示範如何建立及使用記憶體最佳化資料表。Contains code samples that show how to create and use a memory-optimized table.
記憶體最佳化資料表Memory-Optimized Tables 介紹記憶體最佳化的資料表。Introduces memory-optimized tables.
記憶體最佳化資料表變數Memory-Optimized Table Variables 程式碼範例,示範如何使用記憶體最佳化的資料表變數取代傳統資料表變數,以減少 tempdb 的使用量。Code example showing how to use a memory-optimized table variable instead of a traditional table variable to reduce tempdb use.
記憶體最佳化資料表上的索引Indexes on Memory-Optimized Tables 介紹記憶體最佳化索引。Introduces memory-optimized indexes.
原生編譯的預存程序Natively Compiled Stored Procedures 介紹原生編譯的預存程序。Introduces natively compiled stored procedures.
為記憶體內部 OLTP 管理記憶體Managing Memory for In-Memory OLTP 了解及管理系統上的記憶體使用量。Understanding and managing memory usage on your system.
建立及管理記憶體最佳化物件的儲存體Creating and Managing Storage for Memory-Optimized Objects 討論資料與差異檔案 (儲存記憶體最佳化之資料表中的交易資訊)。Discusses data and delta files, which store information about transactions in memory-optimized tables.
備份、還原及復原記憶體最佳化資料表Backup, Restore, and Recovery of Memory-Optimized Tables 討論記憶體最佳化資料表的備份、還原及復原。Discusses backup, restore, and recovery for memory-optimized tables.
記憶體內部 OLTP 的 Transact-SQL 支援Transact-SQL Support for In-Memory OLTP 討論適用於 Transact-SQLTransact-SQL記憶體內部 OLTPIn-Memory OLTP支援。Discusses Transact-SQLTransact-SQL support for 記憶體內部 OLTPIn-Memory OLTP.
記憶體內部 OLTP 資料庫的高可用性支援High Availability Support for In-Memory OLTP databases 討論可用性群組與 記憶體內部 OLTPIn-Memory OLTP中的容錯移轉叢集。Discusses availability groups and failover clustering in 記憶體內部 OLTPIn-Memory OLTP.
記憶體中 OLTP 的 SQL Server 支援SQL Server Support for In-Memory OLTP 列出為支援記憶體最佳化資料表新增和更新的語法和功能。Lists new and updated syntax and features supporting memory-optimized tables.
移轉至 In-Memory OLTPMigrating to In-Memory OLTP 討論如何將以磁碟為基礎的資料表移轉到記憶體最佳化的資料表。Discusses how to migrate disk-based tables to memory-optimized tables.

本節提供其他包含 SQL Server 上記憶體內部 OLTP 相關資訊的網站連結。This section provides links to other websites that contain information about In-Memory OLTP on SQL Server.

17 分鐘的影片,已建立索引17 minute video, indexed

  • 影片標題:   SQL Server 2016 中的記憶體內部 OLTPVideo title:   In-Memory OLTP in SQL Server 2016
  • 發佈日期:   2019-03-10,YouTube.com 上。Published date:   2019-03-10, on YouTube.com.
  • 影片長度:   17:32     (請參閱下列索引以取得影片的連結)。Duration:   17:32     (See the following Index for links into the video.)
  • 主持人:   SQL Server 資深方案經理 Jos de BruijnHosted by:   Jos de Bruijn, Senior Program Manager on SQL Server

您可以下載示範內容Demo can be downloaded

在時間標記 08:09 處,影片會執行示範兩次。At the time mark 08:09, the video runs a demonstration twice. 您可以在下列連結下載影片中所使用的可執行效能示範的原始程式碼:You can download the source code for runnable performance demo that is used in the video, from the following link:

影片中所見到的一般步驟如下:The general steps seen in the video are as follows:

  1. 首先會使用一般資料表來執行示範。First the demo is run with a regular table.
  2. 接下來我們會看到正在建立資料表記憶體最佳化版本,並在 SQL Server Management Studio (SSMS.exe) 中按幾下以進行填入的過程。Next we see a memory-optimized edition of the table being created and populated by a few clicks in SQL Server Management Studio (SSMS.exe).
  3. 接著,會使用經記憶體最佳化的資料表再次執行示範。Then the demo is rerun with the memory-optimized table. 我們可以測量到速度上的大幅改善。An enormous speed improvement is measured.

影片中各區段的索引Index to each section in the video

時間標記連結Time mark link 區段標題Section title
A. 00:00A.  00:00 開頭。The beginning.

B. 00:56B.  00:56

為什麼客戶應在意記憶體內部 OLTP。Why customers should care about In-Memory OLTP.
    01:03    01:03 現代硬體需要現代的資料庫系統架構。Modern hardware requires modern architecture of database system.
    02:10    02:10 資料正在產生爆炸,作業必須即時 (低延遲)。Explosion in data being generated; operations need to be instant (low latency).
    03:19    03:19 減少 TCO - 以您擁有的資源進行更多作業。Reduce TCO - do more with the resources you have.

C. 03:33C.  03:33

什麼是記憶體內部 OLTP。What In-Memory OLTP is.
使用記憶體最佳化技術最佳化後的效能。Performance optimized using memory-optimized technology.
    05:03    05:03 交易處理最高可以快上 30 倍。Up to 30X faster transaction processing.
    05:22    05:22 完全耐久 - 資料不會因伺服器失敗而遺失。Fully durable - data survives server failures.
    06:15    06:15 完全整合在 SQL Server 中。Fully integrated in SQL Server. 因此您不需要學習新的語言或工具。Thus no new languages or tools to learn.
    07:22    07:22 在 SQL Server 2014 中首次發行,但在 2016 中有了大幅度的改善。First released in SQL Server 2014, but major improvements in 2016.
    07:58    07:58 也在 Azure SQL Database 中提供使用 (雲端)。Available in Azure SQL Database too (in the cloud).

D. 08:09D.  08:09

效能示範。Performance demonstration.
使用一般資料表執行示範。Run the demo with a regular table.
    09:11    09:11 SSMS 操作功能表:報表 > 交易效能分析SSMS context menu: Reports > Transaction Performance Analysis
    10:38    10:38 SSMS 操作功能表:記憶體最佳化 AdvisorSSMS context menu: Memory Optimization Advisor
    從一般資料表實際建立經記憶體最佳化的資料表並移轉資料。    Actually create a memory-optimized table from a regular table, plus migrate the data.
    11:28    11:28 重新執行示範,看到 45 倍的速度改善。Rerun the demo, see 45X speed improvement.

E. 12:17E.  12:17

在 SQL Server 2016 中更易於使用記憶體內部 OLTP (相較於 2014)。Easier to use In-Memory OLTP in SQL Server 2016 (compared to 2014).
    12:43    12:43 簡化分析以協助應用程式移轉。Simplified analysis to help with app migration.
    13:03    13:03 透過增加 Transact-SQL 語言支援來減少應用程式移轉的複雜度 (例如包含外部索引鍵及觸發程序)。Reduced complexity of app migration through increased Transact-SQL language support (for example, with foreign keys and triggers).
    13:56    13:56 改善管理性。Improved manageability.
    例如變更結構描述及索引、自動更新統計資料。    For example, change schema and indexes, auto-update of statistics.

F. 14:46F.  14:46

改善延展性。Improved scalability.
    15:12    15:12 大型記憶體最佳化資料表 (每個資料庫最高可達 2 TB)。Large memory-optimized tables (up to 2TB per database).
    15:34    15:34 更佳的縮放。Even better scaling.
    16:41    16:41 利用您已經擁有的資源進行更多作業!Do more with the resources you already have!

G. 16:53G.  16:53

最後評論。Final comments. (結束於 17:32。)(Ends at 17:32.)

另請參閱See also

資料庫功能Database Features