{"id":5055,"date":"2015-07-10T16:46:57","date_gmt":"2015-07-10T14:46:57","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/"},"modified":"2015-07-10T16:46:57","modified_gmt":"2015-07-10T14:46:57","slug":"clustered-columnstore-index-and-memory-management","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/","title":{"rendered":"Clustered columnstore index and memory management"},"content":{"rendered":"<p>Few weeks ago, I had the opportunity to give a session about the clustered columnstore index feature (CCI) at our In-Memory <a href=\"https:\/\/www.dbi-services.com\/newsroom\/events\/\">event<\/a> dedicated to In-Memory technologies for Microsoft SQL Server, Oracle and SAP HANA. During our session, I explained the improvement made by Microsoft on SQL Server 2014 with the introduction of new clustered columnstore index (CCI).<\/p>\n<p>The CCI includes a new structure that allows update operations: the delta store. Indeed, insert operations go directly in the delta store. Delete operations are logical and go in the deleted bitmap in the delta store and finally update operations are split into two basic operations DELETE operation followed by INSERT operation. I was very interested in how SQL Server deals with both the structures (delta store and columnstore) and memory in different scenarios. This blog post is a result of my studies and will probably concern those who are interested by internal stuff. In fact, I discussed with one of my (oracle) friend and he asked me some interesting questions about CCI and the memory management topic.<\/p>\n<p>First of all, let\u2019s begin with the storage concept: the delta store consists of a traditional row-based storage unlike the columnstore index which is column-oriented storage. The two structures are managed differently by SQL Server and they have their own memory space &#8211; respectively the CACHESTORE_COLUMSTOREOBJECTPOOL for the columnstore structure and the traditional buffer pool (BP) for the row store structure. When columnstore data are fetched from disk to memory, they come first to the BP and then to the columnstore memory pool. We may get information about columnstore memory pool by using the following query:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">type<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 memory_node_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pages_kb<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_size_in_bytes<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_memory_clerks<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">type <span style=\"color: gray\">= <span style=\"color: red\">&#8216;CACHESTORE_COLUMNSTOREOBJECTPOOL&#8217;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\" alt=\"blog_55_-_2-_CCI_memory_management_memory_clerk-_\" width=\"620\" height=\"35\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline\">First scenario<\/span><\/strong><\/p>\n<p>We\u2019ll see how SQL Server behaves by reading data exclusively from the delta store. Let\u2019s begin with a pretty simple table:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: green\">&#8212; create table test_CCI<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">if<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;test_CCI&#8217;<span style=\"color: gray\">, <span style=\"color: red\">&#8216;U&#8217;<span style=\"color: gray\">) <span style=\"color: gray\">is <span style=\"color: gray\">not <span style=\"color: gray\">null<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">drop <span style=\"color: blue\">table test_CCI<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">create<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">table test_CCI<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 id <span style=\"color: blue\">int <span style=\"color: gray\">not <span style=\"color: gray\">null <span style=\"color: blue\">identity<span style=\"color: gray\">(1<span style=\"color: gray\">,1<span style=\"color: gray\">),<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 col1 <span style=\"color: blue\">char<span style=\"color: gray\">(10<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null <span style=\"color: blue\">default <span style=\"color: red\">&#8216;col_&#8217;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">);<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<p>&nbsp;<\/p>\n<p>Next, let\u2019s create a CCI that will include 1 compressed row group and 1 delta store (open state):<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">set<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">nocount <span style=\"color: blue\">on<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: green\">&#8212; insert 1000 rows<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">insert<span style=\"font-size: 9.5pt;font-family: Consolas\"> test_CCI <span style=\"color: blue\">default <span style=\"color: blue\">values<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<span style=\"font-size: 9.5pt;font-family: Consolas\"> 1000<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: green\">&#8212; create CCI <\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">create<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">clustered <span style=\"color: blue\">columnstore <span style=\"color: blue\">index [PK__test_CCI__3213E83F3A6FE3AC]<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">on<span style=\"font-size: 9.5pt;font-family: Consolas\"> test_CCI <\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: green\">&#8212; insert 1 rows in order to create a delta store (OPEN state)<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">insert<span style=\"font-size: 9.5pt;font-family: Consolas\"> test_CCI <span style=\"color: blue\">default <span style=\"color: blue\">values<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<span style=\"font-size: 9.5pt;font-family: Consolas\"> 1<\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p>Let\u2019s have a look at the CCI row group\u2019s information:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">object_name<span style=\"color: gray\">(<span style=\"color: fuchsia\">object_id<span style=\"color: gray\">) <span style=\"color: blue\">as table_name<span style=\"color: gray\">,<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 index_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_group_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delta_store_hobt_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state_description <span style=\"color: blue\">as [state]<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 total_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 deleted_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 size_in_bytes<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.column_store_row_groups<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;test_CCI&#8217;<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_configuration-_.jpg\" alt=\"blog_55_-_2-_CCI_configuration-_\" width=\"543\" height=\"48\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Let\u2019s execute the first query that will fetch data from the record to the delta store<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">dbcc<span style=\"font-size: 9.5pt;font-family: Consolas\"> dropcleanbuffers<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">max<span style=\"color: gray\">(id<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> dbo<span style=\"color: gray\">.test_CCI<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> id <span style=\"color: gray\">= 1001<\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p>Let\u2019s have a look at the memory cache entries related to the CCI memory pool:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 name<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 in_use_count<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 is_dirty<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pages_kb<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 entry_data<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 pool_id<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_memory_cache_entries<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">type <span style=\"color: gray\">= <span style=\"color: red\">&#8216;CACHESTORE_COLUMNSTOREOBJECTPOOL&#8217;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_3-_CCI_memory_management_cache_entries_empty-_.jpg\" alt=\"blog_55_-_3-_CCI_memory_management_cache_entries_empty-_\" width=\"385\" height=\"45\" \/><\/p>\n<p>No entries and this is what I expected because data come only from delta store and the buffer pool is the only one concerned by this scenario. Another important point: segments are eliminated directly from disk. In order to prove it, I created an extended event to get segment elimination information as follows:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">CREATE<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">EVENT <span style=\"color: blue\">SESSION [cci_segment_elimination] <\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">ON<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">SERVER <\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">ADD<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">EVENT sqlserver<span style=\"color: gray\">.column_store_segment_eliminate<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0 <span style=\"color: blue\">WHERE <span style=\"color: gray\">([sqlserver]<span style=\"color: gray\">.[database_name]<span style=\"color: gray\">=<span style=\"color: red\">N&#8217;db_test&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">)<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">ADD<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">TARGET package0<span style=\"color: gray\">.event_file<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">SET <span style=\"color: blue\">filename<span style=\"color: gray\">= <span style=\"color: red\">N&#8217;C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLLogcci_segment_elimination&#8217;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">)<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">WITH<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MAX_MEMORY<span style=\"color: gray\">=4096 KB<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 EVENT_RETENTION_MODE<span style=\"color: gray\">=ALLOW_SINGLE_EVENT_LOSS<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MAX_DISPATCH_LATENCY<span style=\"color: gray\">=30 SECONDS<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MAX_EVENT_SIZE<span style=\"color: gray\">=0 KB<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 MEMORY_PARTITION_MODE<span style=\"color: gray\">=<span style=\"color: blue\">NONE<span style=\"color: gray\">,<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TRACK_CAUSALITY<span style=\"color: gray\">=<span style=\"color: blue\">OFF<span style=\"color: gray\">,<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 STARTUP_STATE<span style=\"color: gray\">=<span style=\"color: blue\">OFF<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">)<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">GO<\/span><\/div>\n<p>&nbsp;<\/p>\n<p>And after looking at the extended event file, I noticed that the segment was eliminated by SQL Server as expected.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_4-_CCI_segment_elimination.jpg\" alt=\"blog_55_-_4-_CCI_segment_elimination\" width=\"435\" height=\"246\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The hobt_id value relies to the compressed segment in the columnstore index:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">partition_id<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 hobt_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 column_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 segment_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_count<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 min_data_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 max_data_id<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.column_store_segments <\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> hobt_id <span style=\"color: gray\">= 72057594041925632<\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_5-_CCI_segment.jpg\" alt=\"blog_55_-_5-_CCI_segment\" width=\"624\" height=\"58\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline\">Second scenario<\/span><\/strong><\/p>\n<p>It will consist in reading data directly from the columnstore segment.<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">dbcc<span style=\"font-size: 9.5pt;font-family: Consolas\"> dropcleanbuffers<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">max<span style=\"color: gray\">(id<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> dbo<span style=\"color: gray\">.test_CCI<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> id <span style=\"color: gray\">= 1<\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p>With the previous script that uses the <em>sys.dm_os_memory_cache_entries<\/em> DMV we can see this time, two cached entries from the columnstore object pool:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_1-_CCI_memory_management_-_cache_entries.jpg\" alt=\"blog_55_-_1-_CCI_memory_management_-_cache_entries\" width=\"685\" height=\"57\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>I would like to thank <a href=\"https:\/\/social.msdn.microsoft.com\/profile\/sunil%20agarwal\/\">Sunil Argarwal<\/a> (Principal Program Manager in SQL Server Storage Engine) for his kindness and some information he gave me, in order to read the above entry data column values. [Object type] is a very useful information here with the following meaning:<\/p>\n<div style=\"margin-bottom: 0.0001pt\">0x0 = Un-initalized object<\/div>\n<div style=\"margin-bottom: 0.0001pt\">0x1 = Column segment<\/div>\n<div style=\"margin-bottom: 0.0001pt\">0x2 = Primary dictionary for a column<\/div>\n<div style=\"margin-bottom: 0.0001pt\">0x4 = Secondary dictionary for a column segment<\/div>\n<div style=\"margin-bottom: 0.0001pt\">0x5 = the primary dictionary with reverse HT initialized, used for bulk insert<\/div>\n<div style=\"margin-bottom: 0.0001pt\">0x6 = Delete bitmap &#8211; used temporarily when reading from disk<\/div>\n<p>So let\u2019s correlate with the retrieved entry data column values. SQL Server fetched the concerned segment (object_id = 1) from disk to the columnstore object memory. However, let\u2019s have a look at the column_id value (= 2 here). In fact, I expected to get value =1 which might be related to the <em>id<\/em> column in the table <em>dbo.test_CCI<\/em>. I performed some other tests and they let me think that the column_id from the <em>entry_data<\/em> column value is in fact equal to the column_id minus 1 from the concerned table but I will check this point in the near future.<\/p>\n<p>Moreover, according to the Sunil\u2019s information, the deleted bitmap (object_id=6) was also fetched by SQL Server. I can imagine that SQL Server needs to read it to retrieve deleted records. My feeling is that these operations are fully logical and SQL Server has no way to identify a deleted record from a segment without reading the deleted bitmap.<\/p>\n<p>We can assume that the columnstore memory pool is a room for storing the columnstore segments and segments are stored in LOB pages. Does SQL Server read data directly from the columnstore memory pool?<\/p>\n<p>Let\u2019s go back to the previous test. As a reminder, we want to get the max (id) from the columnstore segment related to the <em>id<\/em> columm. So SQL Server needs to read the related segment in this case. Let\u2019s see if we can retrieve a corresponding page in the buffer pool by using the following script:<\/p>\n<div><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_type<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">count<span style=\"color: gray\">(*) <span style=\"color: blue\">as nb_pages<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_buffer_descriptors<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> database_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">db_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;db_test&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">group<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">by page_type<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">order<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">by page_type<\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_7-_CCI_buffer_pool.jpg\" alt=\"blog_55_-_7-_CCI_buffer_pool\" width=\"217\" height=\"211\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Ok, there are plenty of pages in the buffer pool related to the <em>db_test<\/em> database. Let\u2019s focus first on data page by using the following script that consists in retrieving data pages only for the <em>dbo.test_CCI<\/em> table:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">if<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;tempdb..#buffer_descriptor_pages&#8217;<span style=\"color: gray\">) <span style=\"color: gray\">is <span style=\"color: gray\">not <span style=\"color: gray\">null<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">drop<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">table #buffer_descriptor_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">create<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">table #buffer_descriptor_pages<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 num <span style=\"color: blue\">INT <span style=\"color: gray\">null,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ParentObject <span style=\"color: blue\">varchar<span style=\"color: gray\">(100<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [Object] <span style=\"color: blue\">varchar<span style=\"color: gray\">(100<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Field <span style=\"color: blue\">varchar<span style=\"color: gray\">(100<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUE <span style=\"color: blue\">varchar<span style=\"color: gray\">(100<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">);<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @sql <span style=\"color: blue\">varchar<span style=\"color: gray\">(<span style=\"color: fuchsia\">max<span style=\"color: gray\">) <span style=\"color: gray\">= <span style=\"color: red\">&#8221;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @database_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @file_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @page_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @i <span style=\"color: blue\">int <span style=\"color: gray\">= 0<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages <span style=\"color: blue\">cursor <span style=\"color: blue\">fast_forward<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">for<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 database_id<span style=\"color: gray\">, <span style=\"color: fuchsia\">file_id<span style=\"color: gray\">, page_id<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_buffer_descriptors<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> database_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">db_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;db_test&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and page_type <span style=\"color: gray\">= <span style=\"color: red\">&#8216;DATA_PAGE&#8217;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">open<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">fetch<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">next <span style=\"color: blue\">from c_pages <span style=\"color: blue\">into @database_id<span style=\"color: gray\">, @file_id<span style=\"color: gray\">, @page_id<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">while<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">@@fetch_status <span style=\"color: gray\">= 0<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">begin<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">set @sql <span style=\"color: gray\">= <span style=\"color: red\">&#8216;dbcc traceon (3604); dbcc page(&#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@database_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, &#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@file_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, &#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@page_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, 3) with tableresults&#8217;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">insert <span style=\"color: blue\">into #buffer_descriptor_pages<span style=\"color: gray\">(ParentObject<span style=\"color: gray\">, [Object]<span style=\"color: gray\">, Field<span style=\"color: gray\">, VALUE<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">exec<span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<span style=\"font-size: 9.5pt;font-family: Consolas\">@sql<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">update #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">set<span style=\"font-size: 9.5pt;font-family: Consolas\"> num <span style=\"color: gray\">= @i<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">where num <span style=\"color: gray\">is <span style=\"color: gray\">null;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">set @i <span style=\"color: gray\">= @i <span style=\"color: gray\">+ 1<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">fetch <span style=\"color: blue\">next <span style=\"color: blue\">from c_pages <span style=\"color: blue\">into @database_id<span style=\"color: gray\">, @file_id<span style=\"color: gray\">, @page_id<span style=\"color: gray\">;\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">end<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">close<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">deallocate<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: gray\">*<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> num <span style=\"color: gray\">in<span style=\"color: gray\">(<span style=\"color: blue\">select num<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">from #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">where Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;Metadata: ObjectId&#8217;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and VALUE <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;dbo.test_CCI&#8217;<span style=\"color: gray\">));<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p>In my case, I retrieved only one page with the following detail:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_7-_CCI_page_compressed_details.jpg\" alt=\"blog_55_-_7-_CCI_page_compressed_details\" width=\"630\" height=\"273\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>We get a compressed data page and, to be more precise, a data page that comes from the delta store (id = 1001). Remember that the segment elimination is not performed for the delta store. This is why I got this page in my case.<\/p>\n<p>Next, let\u2019s have a look at the LOB pages (our segments)<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 database_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">file_id<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 page_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 allocation_unit_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_count<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_buffer_descriptors<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> database_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">db_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;db_test&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and page_type <span style=\"color: gray\">= <span style=\"color: red\">&#8216;TEXT_MIX_PAGE&#8217;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and allocation_unit_id <span style=\"color: gray\">IN<span style=\"color: gray\">(<span style=\"color: blue\">select au<span style=\"color: gray\">.allocation_unit_id<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">from <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">allocation_units <span style=\"color: blue\">as au<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 <span style=\"color: gray\">join <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">partitions <span style=\"color: blue\">as p<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">on p<span style=\"color: gray\">.hobt_id <span style=\"color: gray\">= au<span style=\"color: gray\">.container_id<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0 <span style=\"color: blue\">where p<span style=\"color: gray\">.<span style=\"color: fuchsia\">object_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;dbo.test_CCI&#8217;<span style=\"color: gray\">));<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_8-_CCI_LOB_pages.jpg\" alt=\"blog_55_-_8-_CCI_LOB_pages\" width=\"391\" height=\"40\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>We have one LOB page (TEXT_MIXPAGE type) but it seems to be empty and I admit that I don\u2019t have any idea of this page. I will update this blog post later if I get a response.<\/p>\n<p>So, to summarize and according to my tests, it\u2019s seems that SQL Server reads LOB pages directly from the columnstore object pool and doesn\u2019t need to use the BP in this case.<\/p>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"text-decoration: underline\">Third scenario<\/span><\/strong><\/p>\n<p>It will consist in updating data from the columnstore index and understanding how SQL Server behaves in this case.<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">alter<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">index [PK__test_CCI__3213E83F3A6FE3AC]<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">on<span style=\"font-size: 9.5pt;font-family: Consolas\"> [dbo]<span style=\"color: gray\">.[test_CCI] <span style=\"color: blue\">rebuild<\/span><\/span><\/span><\/span><\/div>\n<p>&#8230;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">object_name<span style=\"color: gray\">(<span style=\"color: fuchsia\">object_id<span style=\"color: gray\">) <span style=\"color: blue\">as table_name<span style=\"color: gray\">,<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 index_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_group_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delta_store_hobt_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state_description <span style=\"color: blue\">as [state]<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 total_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 deleted_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 size_in_bytes<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.column_store_row_groups<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;test_CCI&#8217;<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_9-_CCI_without_deltastore.jpg\" alt=\"blog_55_-_9-_CCI_without_deltastore\" width=\"626\" height=\"37\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Next, let\u2019s update the columnstore index by using the following query:<\/p>\n<div><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">checkpoint<span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">;<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">dbcc<span style=\"font-size: 9.5pt;font-family: Consolas\"> dropcleanbuffers<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: fuchsia\">update<span style=\"font-size: 9.5pt;font-family: Consolas\"> dbo<span style=\"color: gray\">.test_CCI<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">set<span style=\"font-size: 9.5pt;font-family: Consolas\"> col1 <span style=\"color: gray\">= <span style=\"color: red\">&#8216;toto&#8217;<\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p>At this point, a delta store page is created by SQL Server and we have to think differently because the storage has changed from columnar to row store. So let\u2019s have a look at the modified pages related to the columnstore index.<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">if<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;tempdb..#buffer_descriptor_pages&#8217;<span style=\"color: gray\">) <span style=\"color: gray\">is <span style=\"color: gray\">not <span style=\"color: gray\">null<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">drop<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">table #buffer_descriptor_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">create<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">table #buffer_descriptor_pages<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 num <span style=\"color: blue\">INT <span style=\"color: gray\">null,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ParentObject <span style=\"color: blue\">varchar<span style=\"color: gray\">(400<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 [Object] <span style=\"color: blue\">varchar<span style=\"color: gray\">(400<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Field <span style=\"color: blue\">varchar<span style=\"color: gray\">(400<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null,<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 VALUE <span style=\"color: blue\">varchar<span style=\"color: gray\">(400<span style=\"color: gray\">) <span style=\"color: gray\">not <span style=\"color: gray\">null<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">);<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @sql <span style=\"color: blue\">varchar<span style=\"color: gray\">(<span style=\"color: fuchsia\">max<span style=\"color: gray\">) <span style=\"color: gray\">= <span style=\"color: red\">&#8221;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @database_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @file_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @page_id <span style=\"color: blue\">int<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> @i <span style=\"color: blue\">int <span style=\"color: gray\">= 0<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">declare<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages <span style=\"color: blue\">cursor <span style=\"color: blue\">fast_forward<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">for<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 database_id<span style=\"color: gray\">, <span style=\"color: fuchsia\">file_id<span style=\"color: gray\">, page_id<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.<span style=\"color: green\">dm_os_buffer_descriptors<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> database_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">db_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;db_test&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and page_type <span style=\"color: gray\">= <span style=\"color: red\">&#8216;DATA_PAGE&#8217;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and is_modified <span style=\"color: gray\">= 1<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">open<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">fetch<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: blue\">next <span style=\"color: blue\">from c_pages <span style=\"color: blue\">into @database_id<span style=\"color: gray\">, @file_id<span style=\"color: gray\">, @page_id<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">while<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">@@fetch_status <span style=\"color: gray\">= 0<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">begin<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">set @sql <span style=\"color: gray\">= <span style=\"color: red\">&#8216;dbcc traceon (3604); dbcc page(&#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@database_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, &#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@file_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, &#8216; <span style=\"color: gray\">+ <span style=\"color: fuchsia\">cast<span style=\"color: gray\">(@page_id <span style=\"color: blue\">as <span style=\"color: blue\">varchar<span style=\"color: gray\">(10<span style=\"color: gray\">)) <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">+ <span style=\"color: red\">&#8216;, 3) with tableresults&#8217;<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">insert <span style=\"color: blue\">into #buffer_descriptor_pages<span style=\"color: gray\">(ParentObject<span style=\"color: gray\">, [Object]<span style=\"color: gray\">, Field<span style=\"color: gray\">, VALUE<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">exec<span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">(<span style=\"font-size: 9.5pt;font-family: Consolas\">@sql<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">update #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">set<span style=\"font-size: 9.5pt;font-family: Consolas\"> num <span style=\"color: gray\">= @i<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">where num <span style=\"color: gray\">is <span style=\"color: gray\">null;<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">set @i <span style=\"color: gray\">= @i <span style=\"color: gray\">+ 1<span style=\"color: gray\">;<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">fetch <span style=\"color: blue\">next <span style=\"color: blue\">from c_pages <span style=\"color: blue\">into @database_id<span style=\"color: gray\">, @file_id<span style=\"color: gray\">, @page_id<span style=\"color: gray\">;\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">end<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">close<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">deallocate<span style=\"font-size: 9.5pt;font-family: Consolas\"> c_pages<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: gray\">*<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> num <span style=\"color: gray\">in<span style=\"color: gray\">(<span style=\"color: blue\">select num<\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">from #buffer_descriptor_pages<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: blue\">where <span style=\"color: gray\">(Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;Metadata: ObjectId&#8217;<span style=\"color: gray\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and VALUE <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;dbo.test_CCI&#8217;<span style=\"color: gray\">))<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: gray\">and<span style=\"color: gray\">(Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;m_pageId&#8217; <span style=\"color: gray\">or Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;Record Type&#8217; <span style=\"color: gray\">or Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;CD array entry&#8217; <span style=\"color: gray\">or Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;id&#8217; <span style=\"color: gray\">or Field <span style=\"color: gray\">= <span style=\"color: red\">&#8216;col1&#8217;<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_10-_CCI_after_modifying_data.jpg\" alt=\"blog_55_-_10-_CCI_after_modifying_data\" width=\"630\" height=\"210\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Note that this time, I only focused on the modified \/ dirty pages in my result and I noticed that there are two data pages. The second page (1:94) in the order of this result set is pretty obvious because it concerns the record with <em>id<\/em> = 1 and <em>col1<\/em> = toto (the modified data). However, I\u2019m not sure to know exactly what the first page is but I can again speculate: we performed an update operation and we know that this operation is split in two basic operations DELETE + INSERT. So my feeling here is that this page lies to the deleted bitmap. Let\u2019s have a look at the <em>sys.column_store_row_groups<\/em> DMV:<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">select<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span style=\"color: fuchsia\">object_name<span style=\"color: gray\">(<span style=\"color: fuchsia\">object_id<span style=\"color: gray\">) <span style=\"color: blue\">as table_name<span style=\"color: gray\">,<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 index_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 row_group_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 delta_store_hobt_id<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 state_description <span style=\"color: blue\">as [state]<span style=\"color: gray\">,<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 total_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 deleted_rows<span style=\"color: gray\">,<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 size_in_bytes<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">from<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: green\">sys<span style=\"color: gray\">.column_store_row_groups<\/span><\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">where<span style=\"font-size: 9.5pt;font-family: Consolas\"> <span style=\"color: fuchsia\">object_id <span style=\"color: gray\">= <span style=\"color: fuchsia\">object_id<span style=\"color: gray\">(<span style=\"color: red\">&#8216;test_CCI&#8217;<span style=\"color: gray\">);<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/div>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_11-_CCI_rowgroup_after_modifying_data.jpg\" alt=\"blog_55_-_11-_CCI_rowgroup_after_modifying_data\" width=\"626\" height=\"53\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>And as expected we can notice a logical deleted record in the row group with a new open delta store (and its deleted bitmap). So let\u2019s perform a checkpoint and clear the buffer pool.<\/p>\n<p>&nbsp;<\/p>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">checkpoint<span style=\"font-size: 9.5pt;font-family: Consolas;color: gray\">;<\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas\">\u00a0<\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">dbcc<span style=\"font-size: 9.5pt;font-family: Consolas\"> dropcleanbuffers<span style=\"color: gray\">;<\/span><\/span><\/span><\/div>\n<div style=\"margin-bottom: 0.0001pt;line-height: normal;background: #d9d9d9 none repeat scroll 0% 0%\"><span style=\"font-size: 9.5pt;font-family: Consolas;color: blue\">go<\/span><\/div>\n<p>&nbsp;<\/p>\n<p>Now, we can wonder how SQL Server will retrieve data from <em>id <\/em>column = 1. Indeed, we have a deleted record into the row group from one side and the new version of the data in the delta store on the other side. So, we can guess that SQL Server will need to fetch both the data pages from the delta store and the deleted bitmap to get the correct record.<\/p>\n<p>Let\u2019s verify by performing this test and taking a look first at the memory cache entries related to the columnstore index.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_12-_CCI_memory_management_cache_entries_3.jpg\" alt=\"blog_55_-_12-_CCI_memory_management_cache_entries_3\" width=\"627\" height=\"40\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>SQL Server has fetched the corresponding segment (object_type =1) and the deleted bitmap (object_id=6) as well. Note that segment elimination is not performed for the concerned segment because SQL Server is not able to perform an elimination for segments that contain logical deletions.<\/p>\n<p>Finally let\u2019s retrieve the data pages in the buffer pool related to the columnstore index:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_13_-_CCI_page_compressed_details.jpg\" alt=\"blog_55_-_13_-_CCI_page_compressed_details\" width=\"627\" height=\"209\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Ok we retrieved the same clean pages (<em>is_modified = 0<\/em>) and performing the same test after rebuilding the CCI yielded an empty result. In the latter case, this is the expected behaviour because rebuilding the columnstore index get rid of deleted records inside the segments. Thus, SQL Server doesn\u2019t need the deleted bitmap.<\/p>\n<p>I didn\u2019t cover all the scenarios in this blog post and some questions are not answered yet. My intention was just to introduce some interesting internal stuff done by the CCI. This is definitely a very interesting topic that I want to cover in the near future. Please feel free to share your thoughts about this exciting feature!<\/p>\n<p>By David Barbarin<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Few weeks ago, I had the opportunity to give a session about the clustered columnstore index feature (CCI) at our In-Memory event dedicated to In-Memory technologies for Microsoft SQL Server, Oracle and SAP HANA. During our session, I explained the improvement made by Microsoft on SQL Server 2014 with the introduction of new clustered columnstore [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":5056,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198],"tags":[579,526,51,52],"type_dbi":[],"class_list":["post-5055","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-management","tag-column-store","tag-datawarehouse","tag-sql-server","tag-sql-server-2014"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Clustered columnstore index and memory management - dbi Blog<\/title>\n<meta name=\"description\" content=\"Clustered columnstore index and memory management\" \/>\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.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Clustered columnstore index and memory management\" \/>\n<meta property=\"og:description\" content=\"Clustered columnstore index and memory management\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-10T14:46:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"689\" \/>\n\t<meta property=\"og:image:height\" content=\"40\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"Clustered columnstore index and memory management\",\"datePublished\":\"2015-07-10T14:46:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/\"},\"wordCount\":2481,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\",\"keywords\":[\"Column Store\",\"DataWareHouse\",\"SQL Server\",\"SQL Server 2014\"],\"articleSection\":[\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/\",\"name\":\"Clustered columnstore index and memory management - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\",\"datePublished\":\"2015-07-10T14:46:57+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"description\":\"Clustered columnstore index and memory management\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg\",\"width\":689,\"height\":40},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/clustered-columnstore-index-and-memory-management\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Clustered columnstore index and memory management\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/microsoft-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Clustered columnstore index and memory management - dbi Blog","description":"Clustered columnstore index and memory management","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.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/","og_locale":"en_US","og_type":"article","og_title":"Clustered columnstore index and memory management","og_description":"Clustered columnstore index and memory management","og_url":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/","og_site_name":"dbi Blog","article_published_time":"2015-07-10T14:46:57+00:00","og_image":[{"width":689,"height":40,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"Clustered columnstore index and memory management","datePublished":"2015-07-10T14:46:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/"},"wordCount":2481,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg","keywords":["Column Store","DataWareHouse","SQL Server","SQL Server 2014"],"articleSection":["Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/","url":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/","name":"Clustered columnstore index and memory management - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg","datePublished":"2015-07-10T14:46:57+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"description":"Clustered columnstore index and memory management","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog_55_-_2-_CCI_memory_management_memory_clerk-_.jpg","width":689,"height":40},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/clustered-columnstore-index-and-memory-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Clustered columnstore index and memory management"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/5055","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=5055"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/5055\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/5056"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=5055"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=5055"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=5055"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=5055"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}