{"id":2283,"date":"2013-06-26T09:00:00","date_gmt":"2013-06-26T16:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/"},"modified":"2024-01-22T22:49:17","modified_gmt":"2024-01-23T06:49:17","slug":"getting-started-with-sql-server-2014-in-memory-oltp","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/","title":{"rendered":"Getting Started with SQL Server 2014 In-Memory OLTP"},"content":{"rendered":"<p><span style=\"font-size:small;\">SQL Server 2014 introduces memory-optimized database technology for optimizing the performance of OLTP workloads. In particular, it introduces memory-optimized tables for efficient, contention-free data access, and natively compiled stored procedures for efficient execution of business logic.\u00a0\u00a0\u00a0\u00a0 <\/span><\/p>\n<p>With this post we are giving you a brief introduction to the new syntax for in-memory OLTP, and will show you how to get started with T-SQL and SQL Server Management Studio (SSMS).\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/p>\n<p>Before we start, let\u2019s create a sample database. If you have an existing database you can skip this step.<\/p>\n<p><span style=\"font-size:small;\"> &#8212; optional: create database <br \/> CREATE DATABASE imoltp <br \/>GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">SSMS: To create a database, <br \/> 1.\u00a0\u00a0\u00a0 In Object Explorer, connect to an instance of the SQL Server Database Engine and then expand that instance. <br \/> 2.\u00a0\u00a0\u00a0 Right-click Databases, click New Database and then enter the value for the database name.<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\"><strong>Step 1: enable your database for in-memory OLTP<\/strong> <br \/><\/span><\/p>\n<p><span style=\"font-size:small;\">We are going to add a filegroup for memory_optimized_data to our database, and add a container to this filegroup. This filegroup will be used to guarantee durability of memory-resident data in the event of a server crash or restart. During the crash recovery phase in server startup, the data is recovered from this filegroup and loaded back into memory.<\/span><\/p>\n<p><span style=\"font-size:small;\"> When creating the container in the memory_optimized_data filegroup you must specify the storage location. In this example we picked the folder \u2018c:\\data\u2019. Make sure the folder exists before running the script. <br \/><\/span><\/p>\n<p><span style=\"font-size:small;\">&#8212; enable for in-memory OLTP &#8211; change file path as needed <br \/> ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA <br \/> ALTER DATABASE imoltp ADD FILE (name=&#8217;imoltp_mod1&#8242;, filename=&#8217;c:\\data\\imoltp_mod1&#8242;) TO FILEGROUP imoltp_mod <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">SSMS: To add a memory_optimized_data filegroup and its container, <br \/> 1.\u00a0\u00a0\u00a0 In Object Explorer, expand the Databases node, right-click your database and then click Properties. <br \/>2.\u00a0\u00a0\u00a0 To add a new memory optimized data filegroup, click the Filegroups page. Under MEMORY OPTIMIZED DATA, click Add filegroup and then enter the values for the filegroup. <br \/>3.\u00a0\u00a0\u00a0 To add a file to the filegroup, click the General page. Under Database files, click Add and then enter the values for the file. Use file type FILESTREAM Data.<\/span><\/p>\n<p><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54-metablogapi\/1033.Getting_2D00_Started_2D00_with_2D00_SQL_2D00_Server_2D00_2014_2D00_In_2D00_Memory_2D00_OLTP_5F00_5A07BF20.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Getting Started with SQL Server 2014 In-Memory OLTP\" style=\"margin-right:auto;margin-left:auto;float:none;display:block;background-image:none;\" border=\"0\" alt=\"Getting Started with SQL Server 2014 In-Memory OLTP\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54-metablogapi\/0068.Getting_2D00_Started_2D00_with_2D00_SQL_2D00_Server_2D00_2014_2D00_In_2D00_Memory_2D00_OLTP_5F00_thumb_5F00_27A3EBA1.png\" width=\"496\" height=\"396\" srcset=\"\"><\/a><\/p>\n<p><a href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/7002.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP-Part-2_thumb_5BD814E7.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54-metablogapi\/0574.Getting_2D00_Started_2D00_with_2D00_SQL_2D00_Server_2D00_2014_2D00_In_2D00_Memory_2D00_OLTP_2D00_Part_2D00_2_5F00_2E56F524.png\"><img loading=\"lazy\" decoding=\"async\" title=\"Getting Started with SQL Server 2014 In-Memory OLTP Part 2\" style=\"margin-right:auto;margin-left:auto;float:none;display:block;background-image:none;\" border=\"0\" alt=\"Getting Started with SQL Server 2014 In-Memory OLTP Part 2\" src=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/7002.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP-Part-2_thumb_5BD814E7.png\" original-url=\"http:\/\/blogs.technet.com\/cfs-file.ashx\/__key\/communityserver-blogs-components-weblogfiles\/00-00-00-60-54-metablogapi\/7002.Getting_2D00_Started_2D00_with_2D00_SQL_2D00_Server_2D00_2014_2D00_In_2D00_Memory_2D00_OLTP_2D00_Part_2D00_2_5F00_thumb_5F00_5BD814E7.png\" width=\"500\" height=\"299\" srcset=\"\"><\/a><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 <br \/><strong>Step 2: create your first memory-optimized table<\/strong><\/span><\/p>\n<p><span style=\"font-size:small;\"> We are now ready to create our first memory-optimized tables. We have here two tables, \u2018ShoppingCart\u2019, and \u2018UserSession\u2019. \u2018ShoppingCart\u2019 is a durable table (the default), which means that its contents are persisted on disk and will not be lost on a server crash. \u2018UserSession\u2019 is a non-durable table (DURABILITY=SCHEMA_ONLY), which means that the contents of the table exist only in memory, and are lost on server restart.<\/span><\/p>\n<p><span style=\"font-size:small;\"> Note that in CTP1 memory-optimized tables support only \u2018nonclustered hash\u2019 indexes. The bucket_count of the index should be roughly 1 to 2 times the number of unique index keys you expect to find in the table. <br \/><\/span><\/p>\n<p><span style=\"font-size:small;\">&#8212; create memory optimized tables <br \/> USE imoltp <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; durable table \u2013 contents of this table will not be lost on a server crash <br \/> CREATE TABLE dbo.ShoppingCart ( <br \/>\u00a0\u00a0 ShoppingCartId int not null primary key nonclustered hash with (bucket_count=2000000), <br \/>\u00a0\u00a0 UserId int not null index ix_UserId nonclustered hash with (bucket_count=1000000), <br \/>\u00a0\u00a0 CreatedDate datetime2 not null, <br \/>\u00a0\u00a0 TotalPrice money <br \/> ) <br \/> WITH (MEMORY_OPTIMIZED=ON) <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; non-durable table \u2013 contents of this table are lost on a server restart <br \/> CREATE TABLE dbo.UserSession ( <br \/>\u00a0\u00a0 SessionId int not null primary key nonclustered hash with (bucket_count=400000), <br \/>\u00a0\u00a0 UserId int not null, <br \/>\u00a0\u00a0 CreatedDate datetime2 not null, <br \/>\u00a0\u00a0 ShoppingCartId int, <br \/>\u00a0\u00a0 index ix_UserId nonclustered hash (UserId) with (bucket_count=400000) <br \/> ) <br \/> WITH (MEMORY_OPTIMIZED=ON, DURABILITY=SCHEMA_ONLY) <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">SSMS: To create a memory-optimized table, <br \/> 1.\u00a0\u00a0\u00a0 In Object Explorer, right-click the Tables node of your database, click New, and then click Memory Optimized Table. A template for creating a memory-optimized table is displayed. <br \/> 2.\u00a0\u00a0\u00a0 To replace the template parameters, click Specify Values for Template Parameters on the Query menu. The shortcut key is Ctrl-Shift-M.<\/span><\/p>\n<\/p>\n<p><strong><span style=\"font-size:small;\">Step 3: load your data<\/span><\/strong><\/p>\n<p><span style=\"font-size:small;\"> You can load data into the tables in various ways, including INSERT .. SELECT from an existing disk-based table and BCP. In this example we are using simple INSERT statements for loading the data.<\/span><\/p>\n<p><span style=\"font-size:small;\">&#8212; Basic DML <br \/>&#8212; insert a few rows <br \/> INSERT dbo.UserSession VALUES (1,342,GETUTCDATE(),4) <br \/> INSERT dbo.UserSession VALUES (2,65,GETUTCDATE(),NULL) <br \/> INSERT dbo.UserSession VALUES (3,8798,GETUTCDATE(),1) <br \/> INSERT dbo.UserSession VALUES (4,80,GETUTCDATE(),NULL) <br \/> INSERT dbo.UserSession VALUES (5,4321,GETUTCDATE(),NULL) <br \/> INSERT dbo.UserSession VALUES (6,8578,GETUTCDATE(),NULL) <br \/> INSERT dbo.ShoppingCart VALUES (1,8798,GETUTCDATE(),NULL) <br \/> INSERT dbo.ShoppingCart VALUES (2,23,GETUTCDATE(),45.4) <br \/> INSERT dbo.ShoppingCart VALUES (3,80,GETUTCDATE(),NULL) <br \/> INSERT dbo.ShoppingCart VALUES (4,342,GETUTCDATE(),65.4) <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; verify table contents <br \/> SELECT * FROM dbo.UserSession <br \/> SELECT * FROM dbo.ShoppingCart <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">SSMS: To view the contents of a memory-optimized table, <br \/>\u2981\u00a0\u00a0\u00a0 In Object Explorer, right-click on your memory-optimized table, click on Script Table as, click on SELECT To, click on New Query Editor Window and then execute the query that is displayed.<\/span><\/p>\n<\/p>\n<p><strong><span style=\"font-size:small;\">Step 4: update statistics<\/span><\/strong><\/p>\n<p><span style=\"font-size:small;\"> Memory-optimized tables do not support auto_update_statistics, thus statistics will need to be updated manually. You can use UPDATE STATISTICS to update statistics for individual tables, or sp_updatestats for all tables in the database.<\/span><\/p>\n<p><span style=\"font-size:small;\"> &#8212; update statistics on memory optimized tables <br \/> UPDATE STATISTICS dbo.UserSession WITH FULLSCAN, NORECOMPUTE <br \/> UPDATE STATISTICS dbo.ShoppingCart WITH FULLSCAN, NORECOMPUTE <br \/> GO<\/span><\/p>\n<\/p>\n<p><strong><span style=\"font-size:small;\">Step 5: run queries<\/span><\/strong><\/p>\n<p><span style=\"font-size:small;\"> You are now ready to run your queries. Because they access memory-optimized tables, these queries will benefit from the latch-free data structures and more efficient data access. Here are a few examples.<\/span><\/p>\n<p><span style=\"font-size:small;\"> &#8212; in an explicit transaction, assign a cart to a session and update the total price. <br \/> &#8212; note that the isolation level hint is required for memory-optimized tables with <br \/> &#8212; SELECT\/UPDATE\/DELETE statements in explicit transactions <br \/> BEGIN TRAN <br \/>\u00a0 UPDATE dbo.UserSession WITH (SNAPSHOT) SET ShoppingCartId=3 WHERE SessionId=4 <br \/>\u00a0 UPDATE dbo.ShoppingCart WITH (SNAPSHOT) SET TotalPrice=65.84 WHERE ShoppingCartId=3 <br \/> COMMIT <br \/> GO <br \/> &#8212; verify table contents <br \/> SELECT * <br \/> FROM dbo.UserSession u JOIN dbo.ShoppingCart s on u.ShoppingCartId=s.ShoppingCartId <br \/> WHERE u.SessionId=4 <br \/> GO<\/span><\/p>\n<\/p>\n<p><strong><span style=\"font-size:small;\">Step 6: create natively compiled stored procedures<\/span><\/strong><\/p>\n<p><span style=\"font-size:small;\"> To further optimize the access to memory-optimized tables, and to optimize execution of your business logic, you can create natively compiled stored procedures. While these procedures are written using Transact-SQL, they do not support the full Transact-SQL surface area. For details, see Books Online.<\/span><\/p>\n<p><span style=\"font-size:small;\">Here is an example of a natively compiled stored procedure that accesses the tables we created previously.<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; natively compiled stored procedure for assigning a shopping cart to a session <br \/> CREATE PROCEDURE dbo.usp_AssignCart @SessionId int <br \/> WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER <br \/> AS <br \/> BEGIN ATOMIC <br \/> WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N&#8217;us_english&#8217;)<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 DECLARE @UserId int, <br \/>\u00a0\u00a0\u00a0 @ShoppingCartId int<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 SELECT @UserId=UserId, @ShoppingCartId=ShoppingCartId <br \/>\u00a0 FROM dbo.UserSession WHERE SessionId=@SessionId<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 IF @UserId IS NULL <br \/>\u00a0\u00a0\u00a0 THROW 51000, &#8216;The session or shopping cart does not exist.&#8217;, 1<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 UPDATE dbo.UserSession SET ShoppingCartId=@ShoppingCartId WHERE SessionId=@SessionId <br \/> END <br \/> GO<\/span><\/p>\n<p><span style=\"font-size:small;\"> EXEC usp_AssignCart 1 <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">The following stored procedure showcases the performance of natively compiled stored procedures by inserting a large number of rows into a memory-optimized table. This scripts inserts 1,000,000 rows.<\/span><\/p>\n<p><span style=\"font-size:small;\"> Note that if log IO becomes a bottleneck in the application, SQL Server allows you to use a non-durable table (DURABILITY=SCHEMA_ONLY), which removes the log IO completely.<\/span><\/p>\n<p><span style=\"font-size:small;\"> &#8212; natively compiled stored procedure for inserting a large number of rows <br \/> &#8212;\u00a0\u00a0 this demonstrates the performance of native procs <br \/> CREATE PROCEDURE dbo.usp_InsertSampleCarts @StartId int, @InsertCount int <br \/> WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER <br \/> AS <br \/> BEGIN ATOMIC <br \/> WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N&#8217;us_english&#8217;)<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 DECLARE @ShoppingCartId int = @StartId<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">\u00a0 WHILE @ShoppingCartId &lt; @StartId + @InsertCount <br \/>\u00a0 BEGIN <br \/>\u00a0\u00a0\u00a0 INSERT INTO dbo.ShoppingCart VALUES <br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 (@ShoppingCartId, 1, &#8216;2013-01-01T00:00:00&#8217;, NULL) <br \/>\u00a0\u00a0\u00a0 SET @ShoppingCartId += 1 <br \/>\u00a0 END<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">END <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; insert 1,000,000 rows <br \/> DECLARE @StartId int = (SELECT MAX(ShoppingCartId)+1 FROM dbo.ShoppingCart) <br \/> EXEC usp_InsertSampleCarts @StartId, 1000000 <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">&#8212; verify the rows have been inserted <br \/> SELECT COUNT(*) FROM dbo.ShoppingCart <br \/> GO<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">SSMS: To create a natively compiled stored procedure, <br \/> 1.\u00a0\u00a0\u00a0 In Object Explorer, right-click the Stored Procedures node of your database, click New, and then click Natively Compiled Stored Procedure. A template for creating natively compiled stored procedures is displayed. <br \/> 2.\u00a0\u00a0\u00a0 To replace the template parameters, click Specify Values for Template Parameters on the Query menu. The shortcut key is Ctrl-Shift-M.<\/span><\/p>\n<\/p>\n<p><span style=\"font-size:small;\">For more details about the concepts for in-memory OLTP, as well as a reference of the syntax, see <\/span><a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkId=302261\" target=\"_blank\" rel=\"noopener\"><span style=\"font-size:small;\">Books Online<\/span><\/a><span style=\"font-size:small;\"> or get started and download SQL Server 2014 CTP1 <a href=\"http:\/\/technet.microsoft.com\/evalcenter\/dn205290?WT.mc_id=Blog_SQL_TEE_SQL2014\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/span><\/p>\n<p>That\u2019s all for today, but stay tuned for further posts on this blog!\u00a0\u00a0\u00a0\u00a0 <\/p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQL Server 2014 introduces memory-optimized database technology for optimizing the performance of OLTP workloads. In particular, it introduces memory-optimized tables for efficient, contention-free data access, and natively compiled stored procedures for efficient execution of business logic.<\/p>\n","protected":false},"author":1457,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[],"product":[],"content-type":[2424,2448],"topic":[],"coauthors":[2487],"class_list":["post-2283","post","type-post","status-publish","format-standard","hentry","content-type-best-practices","content-type-updates"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"SQL Server 2014 introduces memory-optimized database technology for optimizing the performance of OLTP workloads. In particular, it introduces memory-optimized tables for efficient, contention-free data access, and natively compiled stored procedures for efficient execution of business logic.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft SQL Server Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/sqlserver\" \/>\n<meta property=\"article:published_time\" content=\"2013-06-26T16:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:49:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\" \/>\n<meta name=\"author\" content=\"SQL Server Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:site\" content=\"@SQLServer\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"SQL Server Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"Getting Started with SQL Server 2014 In-Memory OLTP\",\"datePublished\":\"2013-06-26T16:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:17+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\"},\"wordCount\":1384,\"commentCount\":30,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\",\"name\":\"Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\",\"datePublished\":\"2013-06-26T16:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:17+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with SQL Server 2014 In-Memory OLTP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"name\":\"Microsoft SQL Server Blog\",\"description\":\"Official News from Microsoft\u2019s Information Platform\",\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\",\"name\":\"Microsoft SQL Server Blog\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft SQL Server Blog\"},\"image\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"http:\/\/www.facebook.com\/sqlserver\",\"https:\/\/x.com\/SQLServer\",\"https:\/\/www.youtube.com\/user\/MSCloudOS\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/","og_locale":"en_US","og_type":"article","og_title":"Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog","og_description":"SQL Server 2014 introduces memory-optimized database technology for optimizing the performance of OLTP workloads. In particular, it introduces memory-optimized tables for efficient, contention-free data access, and natively compiled stored procedures for efficient execution of business logic.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2013-06-26T16:00:00+00:00","article_modified_time":"2024-01-23T06:49:17+00:00","og_image":[{"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png","type":"","width":"","height":""}],"author":"SQL Server Team","twitter_card":"summary_large_image","twitter_creator":"@SQLServer","twitter_site":"@SQLServer","twitter_misc":{"Written by":"SQL Server Team","Est. reading time":"6 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"Getting Started with SQL Server 2014 In-Memory OLTP","datePublished":"2013-06-26T16:00:00+00:00","dateModified":"2024-01-23T06:49:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/"},"wordCount":1384,"commentCount":30,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/","name":"Getting Started with SQL Server 2014 In-Memory OLTP - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png","datePublished":"2013-06-26T16:00:00+00:00","dateModified":"2024-01-23T06:49:17+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#primaryimage","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/03\/0068.Getting-Started-with-SQL-Server-2014-In-Memory-OLTP_thumb_27A3EBA1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/06\/26\/getting-started-with-sql-server-2014-in-memory-oltp\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with SQL Server 2014 In-Memory OLTP"}]},{"@type":"WebSite","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","name":"Microsoft SQL Server Blog","description":"Official News from Microsoft\u2019s Information Platform","publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization","name":"Microsoft SQL Server Blog","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft SQL Server Blog"},"image":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/www.facebook.com\/sqlserver","https:\/\/x.com\/SQLServer","https:\/\/www.youtube.com\/user\/MSCloudOS"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/2283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/users\/1457"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/comments?post=2283"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/2283\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=2283"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=2283"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=2283"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=2283"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=2283"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=2283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}