{"id":1703,"date":"2013-11-14T09:00:00","date_gmt":"2013-11-14T17:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/"},"modified":"2024-01-22T22:49:05","modified_gmt":"2024-01-23T06:49:05","slug":"sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/","title":{"rendered":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables"},"content":{"rendered":"<p>Memory-optimized tables must fully reside in memory and can\u2019t be paged out. Unlike disk-based tables where insufficient memory can slowdown an application, the impact to \u00a0memory-optimized tables upon encountering out-of-memory can be severe, causing\u00a0 DML (i.e. delete, insert or update) operations to fail. While this adds a new dimension to managing memory, the application failure due to resource errors is not something new. For example, applications using disk-based tables can fail with resource errors such as running out of transaction log or TempDB or out of storage. It is the responsibility of DBAs\/Administrators to make sure resources are provisioned and managed appropriately to avoid such failures. SQL Server provides a rich set of monitoring tools, including DMVs, PerfMon and XEvents to help administrators identify problems earlier so that a corrective action can be taken. Similarly, for memory-optimized tables, SQL Server provides a rich set of monitoring capabilities and configuration options so that you can manage your database\/instance well and keep your application running smoothly.\u00a0 The remainder of this blog walks thru each of the challenges and details how it can be addressed.<\/p>\n<h2>How do I estimate the memory needed?<\/h2>\n<p>This is the first question that you need consider when migrating an existing table(s) to memory-optimized table(s) or when you are considering a new application using memory-optimized tables. When migrating a disk-based table, you know, for example using sp_spaceused as described in <a href=\"http:\/\/technet.microsoft.com\/en-us\/library\/ms188776.aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/technet.microsoft.com\/en-us\/library\/ms188776.aspx<\/a> , \u00a0its current size so it is just a simple mathematical calculation to find the corresponding size for memory-optimized tables. \u00a0The key differences to be aware of are that memory-optimized tables cannot compressed like disk-based tables with ROW and PAGE compression, so, the memory-optimized table will likely be bigger. However, unlike indexes for disk-based tables, the indexes on memory tables are much smaller. For example, the index key is not stored with hash indexes and all indexes are, by definition, covered indexes. Please refer to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn247639(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/msdn.microsoft.com\/en-us\/library\/dn247639(v=sql.120).aspx<\/a> for details. A more challenging task is to estimate the data growth.\u00a0 While you can make a reasonable guess, the best way is the continuous to monitor the table size and the memory consumed by memory-optimized table (s) in your database and instance.\u00a0 The same monitoring approach holds for new applications that are created with in-memory OLTP in mind.<\/p>\n<h2>How does SQL Server manage memory for memory-optimized tables?<\/h2>\n<p>The in-memory OLTP engine is integrated with SQL Server. Memory allocations to memory-optimized tables are managed by SQL Server Memory Manager and the allocated memory is tracked using familiar constructs and tools such as memory clerks and DMVs. The following DMV shows XTP memory clerks. The first row shows the memory allocated by system threads. The second row with name DB_ID_5 represents the consumers in the database objects and the third row with memory node-id 64 represents memory allocated to DAC (Dedicated Admin Connection).<\/p>\n<p><em>&#8212; Show the memory allocated to in-mempory OLTP objects<\/em><em><\/em><\/p>\n<p><em>select<\/em><em> type, name, memory_node_id, pages_kb\/1024 as pages_MB <\/em><\/p>\n<p><em>from<\/em><em> sys.dm_os_memory_clerks where type like &#8216;%xtp%&#8217;<\/em><\/p>\n<p><em>type\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memory_node_id pages_MB<\/em><\/p>\n<p><em>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/em><\/p>\n<p><em>MEMORYCLERK_XTP\u00a0\u00a0\u00a0\u00a0\u00a0 Default\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 18<\/em><\/p>\n<p><em>MEMORYCLERK_XTP\u00a0\u00a0\u00a0\u00a0\u00a0 DB_ID_5\u00a0\u00a0\u00a0 0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1358<\/em><\/p>\n<p><em>MEMORYCLERK_XTP\u00a0\u00a0\u00a0\u00a0\u00a0 Default\u00a0\u00a0\u00a0 64\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 0<\/em><\/p>\n<p>Also, there are new DMVs that can be used to monitor the memory consumed by the in-memory OLTP engine and memory-optimized tables. Please refer to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn133203(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/msdn.microsoft.com\/en-us\/library\/dn133203(v=sql.120).aspx<\/a> for details.<\/p>\n<p>Like any other memory consumer, the in-memory OLTP engine responds to memory-pressure, but to a limited degree. For example, the memory consumed by data and indexes can\u2019t be released even under memory pressure. This is different than disk-based tables where an external memory pressure may cause the buffer pool to shrink which simply means there will be fewer data\/index pages in memory. For this reason, it is all the more important to provision the memory for memory-optimized tables appropriately, otherwise in-memory OLTP engine \u00a0can starve other memory consumers including the memory needed by SQL Server for its operations which can ultimately leads to slow or unresponsive application. To address this, SQL provides a configuration option to limit the memory consumed by memory-optimized tables.<\/p>\n<h2>How can I limit memory consumed by memory-optimized tables?<\/h2>\n<p>Starting with SQL Server 2014, you can bind a database to a Resource Pool. This binding is only relevant when the database has one or more memory-optimized table. The memory available in the resource pool controls the total memory available to memory-optimized tables in the database.<\/p>\n<p>For example, create a resource pool, mem_optpool as follows<\/p>\n<p><em>CREATE<\/em><em> RESOURCE POOL mem_optpool WITH (MAX_MEMORY_PERCENT = 40);<\/em><\/p>\n<p>Now map the database, <em>mydatabase<\/em>, to this resource pool by executing the following command. With this command, you are specifying that the total memory taken by memory-optimized tables and indexes cannot exceed the limit in the resource pool. So for this case, the other 60% memory is available to other consumers.<\/p>\n<p><em>EXEC<\/em><em> sp_xtp_bind_db_resource_pool &#8216;mydatabase&#8217;, &#8216;mem_optpool&#8217;<\/em><\/p>\n<p>When configuring memory for memory-optimized tables, the capacity planning should be done based on MIN_MEMORY_PERCENT, not on MAX_MEMORY_PERCENT. This provides more predictable memory availability for memory-optimized tables as pools that have the min_memory_percent option set can cause memory pressure notifications against other pools to ensure the minimum percentage is honored.. To ensure that memory is available for the In-Memory OLTP database and help avoid OOM (Out of Memory) conditions, the values for MAX_MEMORY_PERCENT and MIN_MEMORY_PERCENT should be the same. SQL Server target memory is dynamic relative to the OS and setting a minimum memory would be recommended only if the server is not dedicated. For details, please refer to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn465873(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/msdn.microsoft.com\/en-us\/library\/dn465873(v=sql.120).aspx<\/a>.<\/p>\n<h2>How does SQL Server reclaim memory taken by deleted\/updated rows<\/h2>\n<p>The rows for memory-optimized tables are stored in-memory and are linked through Hash and non-clustered indexes as described <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn133190(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/msdn.microsoft.com\/en-us\/library\/dn133190(v=sql.120).aspx<\/a>. Concurrent access to memory-optimized table uses optimistic concurrency control\u00a0 based on row versions.\u00a0\u00a0 Over time, the existing rows may get updated (update operation generates a row version(s)) and deleted but these rows can\u2019t immediately be removed as there may be concurrent transactions that need these rows versions. These older row versions are garbage collected (GC\u2019d) asynchronously when it is determined, based on the active transactions, that they are no longer needed. There is a GC system thread that shares the row version cleanup (i.e. GC) with user transaction activity to ensure that SQL Server is able to keep up with the GC. \u00a0\u00a0When you configure the memory for your workload, you must account for additional memory needed for stale row versions. You can roughly estimate the memory needed for stale row versions using the following steps:<\/p>\n<ol>\n<li>Find the average number of rows updates\/deleted by querying DMV dm_db_xtp_object_stats\u00a0 at the beginning and end of a desired duration for your peak workload, and then compu<\/li>\n<li>Estimate the number (NR) of row versions = (duration of the longest transaction accessing HK tables in seconds) * (average number rows updated\/deleted\/sec)<\/li>\n<li>Assuming that delete\/update operations were uniformly distributed across all memory-optimized tables, find the average row length RLen (including row header and index pointers). \u00a0You can now estimate the memory for row versions as (NR * Nlen)<\/li>\n<\/ol>\n<p>You can use DMVs and Perfmon counters to monitor the progress of Garbage collection. Please refer to <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/dn133203(v=sql.120).aspx?WT.mc_id=Blog_SQL_InMem\">http:\/\/msdn.microsoft.com\/en-us\/library\/dn133203(v=sql.120).aspx<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Memory-optimized tables must fully reside in memory and can\u2019t be paged out. Unlike disk-based tables where insufficient memory can slowdown an application, the impact to \u00a0memory-optimized tables upon encountering out-of-memory can be severe, causing\u00a0 DML (i.e. delete, insert or update) operations to fail.<\/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],"topic":[2475],"coauthors":[2487],"class_list":["post-1703","post","type-post","status-publish","format-standard","hentry","content-type-best-practices","topic-oltp-database-management"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - 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\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - Microsoft SQL Server Blog\" \/>\n<meta property=\"og:description\" content=\"Memory-optimized tables must fully reside in memory and can\u2019t be paged out. Unlike disk-based tables where insufficient memory can slowdown an application, the impact to \u00a0memory-optimized tables upon encountering out-of-memory can be severe, causing\u00a0 DML (i.e. delete, insert or update) operations to fail.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\" \/>\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-11-14T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-23T06:49:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png\" \/>\n\t<meta property=\"og:image:width\" content=\"512\" \/>\n\t<meta property=\"og:image:height\" content=\"512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/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=\"5 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\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\"},\"author\":[{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/\",\"@type\":\"Person\",\"@name\":\"SQL Server Team\"}],\"headline\":\"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables\",\"datePublished\":\"2013-11-14T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\"},\"wordCount\":1273,\"commentCount\":5,\"publisher\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\",\"url\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\",\"name\":\"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - Microsoft SQL Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website\"},\"datePublished\":\"2013-11-14T17:00:00+00:00\",\"dateModified\":\"2024-01-23T06:49:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables\"}]},{\"@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":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - 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\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - Microsoft SQL Server Blog","og_description":"Memory-optimized tables must fully reside in memory and can\u2019t be paged out. Unlike disk-based tables where insufficient memory can slowdown an application, the impact to \u00a0memory-optimized tables upon encountering out-of-memory can be severe, causing\u00a0 DML (i.e. delete, insert or update) operations to fail.","og_url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/","og_site_name":"Microsoft SQL Server Blog","article_publisher":"http:\/\/www.facebook.com\/sqlserver","article_published_time":"2013-11-14T17:00:00+00:00","article_modified_time":"2024-01-23T06:49:05+00:00","og_image":[{"width":512,"height":512,"url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-content\/uploads\/2018\/08\/cropped-microsoft_logo_element.png","type":"image\/png"}],"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":"5 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#article","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/"},"author":[{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/author\/sql-server-team\/","@type":"Person","@name":"SQL Server Team"}],"headline":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables","datePublished":"2013-11-14T17:00:00+00:00","dateModified":"2024-01-23T06:49:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/"},"wordCount":1273,"commentCount":5,"publisher":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#organization"},"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/","url":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/","name":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables - Microsoft SQL Server Blog","isPartOf":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/#website"},"datePublished":"2013-11-14T17:00:00+00:00","dateModified":"2024-01-23T06:49:05+00:00","breadcrumb":{"@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/11\/14\/sql-server-2014-in-memory-oltp-memory-management-for-memory-optimized-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2014 In-Memory OLTP: Memory Management for Memory-Optimized Tables"}]},{"@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\/1703","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=1703"}],"version-history":[{"count":0,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/posts\/1703\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/media?parent=1703"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/post_tag?post=1703"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/product?post=1703"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/content-type?post=1703"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/topic?post=1703"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/wp-json\/wp\/v2\/coauthors?post=1703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}