مفهوم in-memory database از نسخه SQL Server 2014 مطرح و در نسخه 2016 کامل تر شد، این تعریف به یک قابلیت خاص اشاره نمیکنه و در هر نسخه جدیدی امکانات بیشتری بهش افزوده میشه، در نسخه 2019 قابلیت جدیدی بر اساس همین مفهوم ارائه شده با عنوان Memory-Optimized Tempdb ، در واقع امکان تنظیم این ویژگی به صورت Metadata فراهم شده.
با اجرا کوئری
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED TEMPDB_METADATA = ON;
دیتابیس Tempdb به صورت In-memory در کل Instance در دسترس قرار میگیره و از حالت سنتی ذخیره شده در دیسک فیزیکی خارج میشه . تو تعریف بالا به دو مفوم Tempdb و In-memory اشاره کردم ، شرح مفهوم In-memory نیاز به مطلب جداگانه ای داره اما توضیح مختصری درباره Tempdb :
به ازاء هر Instance نصب شده ، یک سری دیتابیس های سیستمی هم ایجاد میشن ، یکی از اونها Tempdb هست وظایف: نگهداری Temporary user objects : object های موقت ایجاد شده توسط کاربر شامل temporary tables indexes ، , temporary stored procedures cursor
نگهداری : Internal objects های داخلی که توسط engine SQL ایجاد شده و شامل work file و work table ها میشن. (هنگام اجرا کوئری، SQL نیاز داره تا برای نگهداری بخشی از محاسبه انجام شده این دو مورد رو ایجاد کنه مثلا برای عملیات های hash join , hash aggregate )
مفهوم Version store: به زبان ساده SQL Server به ازاء هر بروزرسانی در سطح رکورد تا مدتی رکورد رو به عنوان version در Tempdb نگهداری میکنه و بر اساس قواعدی اون ها رو با دیتا اصلی جایگزین میکنه (این موضوع با Dirty Page که قبلا درمورد حرف زدیم متفاوته و به مفهوم Dirty read و Isolation Level مربوط میشه )
منبع :