{"id":1943,"date":"2013-10-03T09:00:00","date_gmt":"2013-10-03T16:00:00","guid":{"rendered":"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2013\/10\/03\/concurrency-control-in-the-in-memory-oltp-engine\/"},"modified":"2024-01-22T22:49:09","modified_gmt":"2024-01-23T06:49:09","slug":"concurrency-control-in-the-in-memory-oltp-engine","status":"publish","type":"post","link":"https:\/\/www.microsoft.com\/en-us\/sql-server\/blog\/2013\/10\/03\/concurrency-control-in-the-in-memory-oltp-engine\/","title":{"rendered":"Concurrency Control in the In-Memory OLTP Engine"},"content":{"rendered":"

We believe that the In-Memory OLTP engine advances the industry state of the art with respect to concurrency control. The main reason for this advancement is due to the combination<\/i> of lock free algorithms and the row-versioned architecture of the engine. <\/span><\/p>\n

This post examines what we precisely mean when we describe the In-Memory OLTP engine as being \u2018lock free\u2019, both in abstract terms but more importantly in terms of impact on user workloads.<\/span><\/p>\n

Let\u2019s start with a brief definition capturing the core attributes implied by the term \u2018lock free\u2019 in In-Memory OLTP: <\/span><\/p>\n

\u201cAt steady state<\/i>, transaction carrying threads<\/i> executing in the context of the<\/i> In-Memory OLTP<\/i> engine<\/i> are designed to require no blocking operation.\u201d <\/span><\/p>\n

Element by element, this definition implies the following exclusions:<\/span><\/p>\n