تبلیغات
NiceSoft - معماری SQL Server قسمت پنجم - ساختار Transaction Log

معماری SQL Server قسمت پنجم - ساختار Transaction Log

تاریخ:یکشنبه 23 آبان 1389-08:08 ق.ظ

معماری فایلهای گزارش تراکنش

 

هر بانک اطلاعاتی SQL Server دارای حداقل یک فایل گزارش تراکنش جهت نگهداری تمام تغییرات داده ای ایجاد شده توسط تراکنشها میباشد. بدین وسیله SQL Server  میتواند عملیات زیر را انجام دهد.

  • ترمیم تراکنشهای مجزاء : اگر در کاربرد یک جمله بازگشت عملیات (ROLLBAK) اجرا شود و یا SQL Server با خطای قطع ارتباط کاربر در هنگام اجرای یک تراکنش برخورد کند . از رکوردهای ذخیره شده در فایل گزارش تراکنش عملیات داده‌ای انجام شده بر روی بانک اطلاعاتی جهت ترمیم و بازگشت داده ها به قبل از تراکنش ناقص استفاده می‌گردد.

  • ترمیم تمام تراکنشهای ناقص هنگام شروع SQL Server : اگر اجرای SQL Server به هر علتی با مشکل مواجه شود ، ممکن است بعضی از داده‌های درون حافظه بر روی فایل فیزیکی بانک اطلاعاتی نوشته نشوند. و بدین ترتیب بعضی از تراکنشها بصورت کامل انجام نگیرند. بنابراین هنگامیکه هر نسخه از SQL Server اجرا میشود ، عمل ترمیم را برای تمام بانکهای اطلاعاتی انجام می‌دهد. هر تغییراتی که در حافظه بوده و در فایلهای اصلی نوشته نشده‌اند بطور کامل نوشته می‌شوند(rolled forward)  . و تمام تراکنشهای ناقص جهت حفظ جامعیت بانک اطلاعاتی به حالت قبل از تراکنش بازگردانده می شوند(rolled back) .

  • ترمیم بانک اطلاعاتی بازیابی شده تا نقطه خرابی بانک اطلاعاتی (rolling forward) : درصورتیکه بانک اطلاعاتی به هر علتی از بین برود. این امکان وجود دارد که بانک اطلاعاتی تا نقطه خرابی احیاء گردد. ابتدا باید پشتیبان گرفته شده از    بانك اطلاعاتی بازیابی شده و سپس با استفاده از فایل گزارش تراكنش عملیات انجام شده بر روی داده‌ها تا نقطه خرابی ترمیم گردند. هنگام بازیابی یك فایل گزارش تراکنش تمام تغییرات ذخیره شده در فایل گزارش تراکنش بر روی         بانك اطلاعاتی اعمال می گردند (rolling forward) . سپس SQL Server تمام تراکنشهای را که تا آن نقطه کامل نشده‌اند را به حالت قبل بر می گرداند (rolling back) .

فایلهای گزارش تراکنش دارای مشخصات زیر میباشند :

  • فایلهای گزارش تراکنش بصورت جداول در بانک اطلاعاتی نگهداری نمیشوند بلکه بصورت یک یا چند فایل جدا نگهداری میشوند. حافظه نگهداری اطلاعات تراکنشها از حافظه نگهداری صفحات داده‌ای جدا بوده و بصورت جداگانه نیز توسط   مدیر بانك اطلاعاتی مدیریت می‌گردد.
  • قالب نگهداری اطلاعات در فایلهای تراکنش مانند قالب صفحات داده‌ای نمی باشند.
  • تراکنشها می توانند در چندین فایل مجزا پیاده سازی شوند و این فایلها میتوانند بصورت گسترش یابنده تعریف گردند و این امر موجب اتلاف حداقل حافظه و نیز کاهش سربار مدیریت بانک اطلاعاتی می‌گردد.
  • مکانیزم قطع قسمتهای بلااستفاده فایل تراکنشها بسیار سریع بوده و حداقل تاثیر را بر روی ماهیت فایل گزارش تراکنشها دارد.

 

پیش نویس گزارش تراکنشها[1]

 

SQL Server مانند بسیاری از بانکهای رابطه‌ای دیگر، از پیش نویس تراکنشها استفاده میکند. پیش نویس تراکنشها این اطمینان را بوجود می‌آورد که هیچ تغییرات داده‌ای بر روی دیسک نوشته نمی شوند مگر آنکه قبل از آن ، رکورد سابقه آن در فایل گزارش تراکنش ثبت شده باشد.

SQL Server از یک حافظه سریع میانی[2] برای خواندن صفحات داده‌ای هنگام تقاضای دسترسی به داده‌ها استفاده می‌كند. تغییرات داده‌ای مستقیما" بر روی دیسک سخت نوشته نمی شوند، بلکه این تغییرات بر روی یک کپی از داده‌های موجود در حافظه میانی اعمال می‌گردند. تغییرات بر روی دیسک سخت نوشته نمی‌شوند مگر اینكه بانك اطلاعاتی به یک نقطه کنترل برسد و یا اطلاعات دورن حافظه جهت نگهداری یک صفحه جدید درون فضای حافظه ،  بر روی دیسک سخت منتقل گردند. نوشتن اطلاعات از حافظه به روی دیسک سخت را تخلیه صفحات گویند و صفحه داده‌یی را كه درون حافظه تغییر یافته ولی هنوز به دیسک سخت منتقل نشده را اصطلاحا" صفحه کثیف[3] می گویند. هنگامیکه یك صفحه داده‌ای در حافظه میانی تغییر می یابد یک رکورد متناظر با آن تغییر، در حافظه میانی تراکنشها ایجاد می‌گردد. این رکورد تراکنش باید قبل از تخلیه صفحه   داده‌ای متناظر تغییر یافته بر روی دیسک ذخیره گردد.در صورتیکه صفحه داده‌ای تغییر یافته قبل از رکورد متناظر خود در حافظه میانی تراکنش بر روی دیسک سخت نوشته شود، تغییری بر روی داده‌های بانک اطلاعاتی اعمال گردیده که در صورت خرابی SQL Server قبل از نوشتن رکورد تراکنش بر روی دیسک قابل بازگشت نیست.SQL Server  دارای مکانیزمی است که همیشه از تخلیه صفحات داده‌ای تغییر یافته قبل از رکورد متناظر آنها در حافظه میانی تراکنشها جلوگیری می‌کند. و به خاطر اینکه همیشه رکوردهای متناظر تراکنش قبل ار صفحات داده‌ای تغییر یافته بر روی دیسک سخت نوشته می‌شوند به فایل گزارش تراکنشها،  فایل گزارش تراکنش پیش نویس می‌گویند.

 

معماری منطقی فایلهای گزارش تراکنش

 

فایلهای گزارش تراکنش SQL Server بصورت یکسری از رکوردهای رشته‌ای تراکنش پشت سرهم ذخیره میشوند. هر رکورد تراکنش توسط یک شماره ترتیب تراکنش([4]LSN) مشخص می‌گردد. هر رکورد تراکنش جدید در خاتمه آخرین رکورد تراکنش و با یک شماره LSN   بالاتر از آن ذخیره می‌گردد.

 

انواع عملیاتی که در فایل گزارش تراکنش ذخیره می‌شوند عبارتند از :

·         شروع و خاتمه هر تراکنش.

·     هر نوع تغییر داده‌ای (insert, update, or delete)  ، این تغییرات حتی شامل تغییرات در جداول سیستمی توسط روالهای ذخیره شده سیستمی و یا دستورات تعریف داده‌ها (DDL)  می‌باشند.

·         هرگونه تخصیص یا آزاد سازی حوضه‌ها.

·         ایجاد و یا حذف جداول و شاخص‌ها.

 

نقاط کنترل[5] و قسمت فعال فایل گزارش تراکنش

 

نقاط کنترل قسمتی از فایل گزارش تراکنش را که در طول عمل ترمیم کامل بانک اطلاعاتی[6] باید مورد پردازش قرار بگیرند را به حداقل میرساند.در طول یک ترمیم کامل بانک اطلاعاتی دو نوع عملیات باید انجام بگیرد.

·     تغییرات داده‌ای (مشخص شده با رکوردهای درون فایل گزارش تراکنش) که در دیسک ذخیره نشده اند ، باید ذخیره گردند (rolling forward).

·     تمام تغییرات تراکنشهای ناقص (تراکنشهای که کامل نشده اند و رکورد COMMIT و یا ROLLBACK در فایل گزارش تراکنش برای آنها ثبت نشده است) باید به حالت قبل از انجام دستورات تراکنش بازگردند.

نقاط کنترل با تخلیه صفحات داده‌ای و رکوردهای تراکنش از درون حافظه سریع میانی بر روی دیسک سخت تعداد تغییراتی را که باید جهت ترمیم بانک اطلاعاتی صورت پذیرند را به حداقل می‌رسانند.

با ایجاد یک نقطه کنترل در SQL Server پردازشهای زیر در بانک اطلاعاتی جاری انجام می‌گیرد :

·         یک رکورد بعنوان شروع نقطه کنترل در فایل گزارش تراکنش ذخیره می‌گردد.

·     اطلاعات نقاط کنترل در یک زنجیره از رکوردهای نقاط کنترل در فایل گزارش تراکنش ذخیره شده و شماره شناسای رکورد(LSN) شروع این زنجیره در صفحه راه اندازی بانک اطلاعاتی ذخیره می‌شود.

·     یک قطعه از اطلاعات ذخیره شده در رکورد نقطه کنترل شماره شناسائی (LSN) صفحه‌ای است که بازگشت عملیات تغییراتاطلاعات (rollback) ، بصورت صحیح از آن امکان پذیر است. این شماره صفحه ، شماره     صفحه‌ی حداقل ترمیم (MinLSN) نامیده میشود.

·         نقاط کنترل لیستی از تمام تراکنشهای فعال که هنوز به دیسک منتقل نشده اند را در خود ذخیره می‌کنند.

·     درصورتیکه از مدل ترمیم ساده بانک اطلاعاتی استفاده گردد، تمام رکوردهای تراکنش درون فایل گزارش تراکنش قبل از جدیدترین MinLSN ، حذف می‌شوند.

·         تمام صفحات داده‌ای و رکوردهای تراکنش درون حافظه های میانی به دیسک منتقل می‌شوند.

·         یک رکورد بعنوان پایان نقطه کنترل در فایل گزارش تراکنش ثبت می‌شود.

 

رکورد MinLSN تا آخرین رکورد نوشته شده در فایل گزارش تراکنش را قسمت فعال فایل گزارش تراکنش می نامند و این همان قسمتی است که برای ترمیم کامل بانک اطلاعاتی لازم است. هیچ محدوده ای از قسمت فعال فایل گزارش تراکنش قابل حذف[7] نبوده و تنها قسمتهای قبل از رکورد MinLSN میتوانند حذف گردند. در شکل زیر یک مثال ساده از یک فایل گزارش تراکنش با دو تراکنش فعال دیده می‌شود. رکوردهای نقاط کنترل جهت ساده‌تر شدن بصورت یک رکورد نمایش داده شده اند.

 

 

رکورد با شماره شناسائی 148 آخرین رکورد در فایل گزارش تراکنش می‌باشد. هنگام ثبت نقطه‌ی کنترل با شماره شناسائی 147، تراکنش یک پایان یافته و تنها تراکنش دو فعال می‌باشد. بنابراین اولین رکورد ذخیره شده برای تراکنش دو ، رکورد با شماره شناسائی 142 بوده که در اصل همان رکورد MinLSN می‌باشد.

 

نقاط کنترل در مواقع زیر ثبت می‌گردند :

·         هنگام اجرای یک جمله CHECKPOINT و با اجرای این جمله برای بانک اطلاعاتی جاری یک نقطه کنترل ثبت می‌گردد.

·         هنگام اجرای دستور ALTER DATABASE جهت تغییر مشخصات یک بانک اطلاعاتی.

·     هنگام توقف یک نمونه از SQL Server  با استفاده از جمله SHUTDOWN   و یا با توقف سرویس SQLServer توسط مدیر سرویس SQL Server .در این صورت برای تمام بانکهای اطلاعاتی آن نمونه از SQL Server ، رکورد نقطه کنترل ثبت می‌گردد.

·     در یک نمونه از SQL Server  بصورت دوره‌ای جهت کاهش زمان ترمیم بانکهای اطلاعاتی برای هر بانک اطلاعاتی بصورت خودکار رکورد نقطه کنترل ثبت می‌شود.


ادامه دارد قسمت ششم


[1] Write-Ahead Transaction Log

[2] buffer cache

[3] dirty page

[4] log sequence number

[5] Checkpoints

[6] full recovery

[7] truncate

 



Buy viagra
سه شنبه 23 مرداد 1397 06:09 ق.ظ

Incredible plenty of great data!
where to buy viagra with prescription buy viagra online no rx cheap viagra online usa where can i buy viagra over the counter viagra prices uk buy viagra with prescription online buy viagra thailand how can i buy viagra online pharmacy buy viagra online australia
Cialis online
دوشنبه 7 خرداد 1397 09:09 ق.ظ

Nicely put, Thanks!
low cost cialis 20mg cialis pills cialis coupons cialis super acti cialis 5 mg buy cialis for sale ou acheter du cialis pas cher cialis rckenschmerzen cialis 5 mg para diabeticos cialis in sconto
chocolate
جمعه 14 اردیبهشت 1397 04:01 ب.ظ
Great post.
Buy cialis online
جمعه 7 اردیبهشت 1397 11:51 ب.ظ

Whoa loads of great tips.
cialis rezeptfrei where do you buy cialis cialis 20 mg cialis prices in england cialis kaufen wo cialis tablets viagra cialis levitra cialis para que sirve wow cialis 20 cialis 20mg
Viagra vs viagra
سه شنبه 4 اردیبهشت 1397 07:12 ب.ظ

Nicely put, Thanks a lot.
buy viagra online india buying cheap viagra online buy viagra online without prescription uk how to buy viagra online online prescription for viagra buy viagra uk buy viagra online safely buy viagra canada cheap viagra prescription buy viagra china
depforce ingredients
جمعه 31 فروردین 1397 09:36 ب.ظ
I really likje wat you guys are usuawlly upp too. Such cleverr work aand reporting!
Keep upp thhe very gooid works guys I've addded you guyss to blogroll.
viagra super active canada
پنجشنبه 23 فروردین 1397 01:06 ب.ظ
Ηеllo tһere, I discoverted ʏour web site ƅy means
of Google ɑt the ѕame time as ⅼooking for ɑ comparable topic, уοur site came up, it appears good.
I hаve bookmarked іt in my google bookmarks.

Ꮋі theгe, simply Ƅecome alert tο your weblog thru Google,
аnd found that it's trսly informative. І am gonna be careful foг brussels.
Ӏ'll Ƅe grateful fߋr those ᴡho proceed tһіs in future.
ᒪots of people will likeⅼy bе benefited from your writing.
Cheers!
Buy generic cialis
شنبه 18 فروردین 1397 09:25 ق.ظ

You've made your stand pretty well.!
cialis sale online weblink price cialis how does cialis work cialis y deporte cialis coupons we use it 50 mg cialis dose buy original cialis tadalafil 5mg cialis uk next day cialis super kamagra
cheap lumigan canada
پنجشنبه 9 فروردین 1397 11:06 ق.ظ
of courwe like your web-site however you have to check the
spellling on several of your posts. Several of them are
rife with spelling problems and I to find it very troublesome to
inform thee truth however I will certainly come back again.
mezo
دوشنبه 6 فروردین 1397 11:49 ب.ظ
Tһіs is rеally inteгesting, Үߋu're a very skilled blogger.

I haνе joined yoour rss fded ɑnd lo᧐k forward
to seeking mоге of your fantastic post. Ꭺlso, I һave shared yοur web site inn mʏ
social networks!
Buy cialis
شنبه 4 فروردین 1397 09:04 ق.ظ

You actually reported that well.
calis online cialis purchasing cialis on the internet safe dosage for cialis viagra vs cialis vs levitra cost of cialis per pill cialis prezzo al pubblico cialis herbs cialis y deporte how to purchase cialis on line
https://www.viagrapascherfr.com/viagra-generique-forum-cher/
شنبه 15 مهر 1396 03:29 ب.ظ
Right here is the perfect blog for anybody who wishes to find out about this topic.
You know so much its almost hard to argue with you (not that I really would want
to…HaHa). You certainly put a fresh spin on a topic which has been written about for ages.
Wonderful stuff, just excellent!
What is a heel lift?
سه شنبه 28 شهریور 1396 03:07 ق.ظ
Right here is the right web site for anybody who hopes to understand this topic.
You understand so much its almost tough to argue with you (not that I really would want to…HaHa).
You definitely put a fresh spin on a subject which has been written about for decades.
Great stuff, just wonderful!
http://janellblauch.jimdo.com/
جمعه 13 مرداد 1396 03:34 ب.ظ
I think that is one of the such a lot important information for me.
And i am happy reading your article. However wanna commentary on few general things, The
site taste is great, the articles is really nice : D.
Just right task, cheers
Amos
دوشنبه 9 مرداد 1396 09:41 ب.ظ
My brother recommended I would possibly like this web site.
He used to be totally right. This submit actually made
my day. You can not consider just how much time I had spent for this info!
Thank you!
medic
شنبه 13 خرداد 1396 10:51 ب.ظ
Oh my goodness! Amazing article dude! Thank you, However I am encountering difficulties with your RSS.
I don't know the reason why I am unable to join it. Is there anyone else getting the same RSS problems?
Anyone who knows the solution will you kindly respond?
Thanks!!
prix
جمعه 5 خرداد 1396 10:49 ق.ظ
Wow, amazing blog layout! How long have you been blogging for?
you made blogging look easy. The overall look of
your website is great, let alone the content!
Charmain
یکشنبه 24 اردیبهشت 1396 11:40 ب.ظ
Hey there I am so glad I found your web site, I really found you by
error, while I was looking on Bing for something else, Anyways I am here now and
would just like to say kudos for a incredible post
and a all round thrilling blog (I also love the theme/design), I don't have time to read
it all at the moment but I have book-marked it and also added your RSS feeds, so when I
have time I will be back to read a lot more, Please do keep
up the great job.
https://www.viagrasansordonnancefr.com/viagra-prix-bas/
شنبه 12 فروردین 1396 10:32 ب.ظ
I read this article fully regarding the difference of newest and earlier technologies, it's
amazing article.
مریم
شنبه 8 آذر 1393 11:27 ب.ظ
منظورم در sql بود
مریم
شنبه 8 آذر 1393 11:26 ب.ظ
سلام عکسها باز نمیشه
خواهشا کمک کنید من برا 4 شنبه باید بحث مدیریت ترمیم در سضم را ارایه بدم
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر