قابلیت indirect checkpoint در نسخه 2012 به SQL Server اضافه شده و توی نسخه 2019 بهبود پیدا کرده، در این مطلب سعی می کنیم تعریف ساده ای از checkpoint ارائه بدیم و بعدا انواع checkpoint رو مورد بررسی قرار بدیم.
مفهوم Page : واحدهای KB 8 ذخیره سازی دیتا (کوچکترین واحد ممکن ) که در دیسک نگهداری میشه .
مفهوم buffer pool : برای خوندن و نوشتن روی Page ها، SQL Server به صورت مستقیم با دیسک کار نمیکنه و نیاز داره Page ها رو به مموری منتقل کنه. فضای اشغال شده مموری توسط SQL Server جهت نگهداری Page ها buffer pool نامیده میشه .
هنگام اجرا کوئری و اعمال تغییر در دیتا ، SQL سراغ Page های موجود در buffer pool میره و اقدام به ویرایش اون ها میکنه اما این تغییرات فعلا روی دیسک اعمال نمیشه .
مفهوم Dirty Page : به Page های که پس از انتقال به حافظه روشون تغییری اعمال شده و در حال حاضر با Page موجود روی دیسک متفاوت هستند Dirty page گفته میشه .
مفهوم Clean buffer و Dirty Buffer : به بخشی از مموری که دارای پیج های Clean )یعنی Page که از دیسک لود شده و هنوز تغییر توش داده نشده( هست Clean buffer و بخشی که پیج های ویرایش شده در آن نگهداری شده Dirty Buffer گفته میشه ( این تقسیم بندی به صورت فیزیکی نبوده و مفهوم منطقی داره )
مفهوم Lazy Writer : درصورت نبود مموری کافی، عملیات خالی کردن حافظه پر شده Lazy Writer گفته میشه که شامل خالی کردن Clean buffer و Dirty Buffer هست .
البته این کار دلایل دیگه ای هم داره در موردش حرف خواهیم زد . درواقع SQL Server به دو روش Lazy writer و checkpoint page های موجود در buffer pool رو مدیریت میکنه، تو حالت اول به دلیل کمبود فضا و نیاز به لود Page های جدید از دیسک ،سراغ مموری میره، دیتا Clean buffer مستقیما پاک کرده و دیتا Dirty Buffer بعد از نوشتن توی دیسک حذف میکنه، اما تو حالت Checkpoint با Page های Clean کاری نداره و dirty page ها رو هم بعد از نوشتن توی دیسک با عنوان Clean page توی حافظه نگهداری میکنه .