نیما جمشیدی
نیما جمشیدی
خواندن ۲ دقیقه·۴ سال پیش

مفهوم Checkpint در پایگاه داده SQL Server

قابلیت 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  هست  .

خب همه این مفاهیم  رو گفتیم تا بتونیم Checkpoint  رو تعریف کنیم ، عملیات نوشته شدن پیج های Dirty  در دیسک فیزیکی  Checkpoint  گفته میشه ، به این معنی که SQL Server نیاز داره هر از گاهی دیتا توی مموری رو با دیتا دیسک یکسان کنه تا درصورتی که اتفاق ناگهانی رخ داد و مموری از دست رفت دیتایی از دست نرفته باشه .

البته این کار دلایل دیگه ای هم داره در موردش حرف خواهیم زد . درواقع SQL Server به دو روش Lazy writer و checkpoint  page  های موجود در buffer pool رو مدیریت میکنه، تو حالت اول به دلیل کمبود فضا و نیاز به لود Page های جدید از دیسک ،سراغ مموری میره،  دیتا Clean buffer مستقیما پاک کرده و دیتا Dirty Buffer   بعد از نوشتن توی دیسک حذف میکنه،  اما تو حالت Checkpoint با Page های Clean  کاری نداره و dirty page  ها رو هم بعد از نوشتن توی دیسک با عنوان  Clean page توی حافظه نگهداری میکنه .

sql serverپایگاه دادهcheck pintنوشتن دیتا در دیسک2019
مدیر پایگاه داده در ایپاد
شاید از این پست‌ها خوشتان بیاید