محمد نصیری
بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

Transaction Log چیست؟ بررسی مفهوم لاگ تراکنش در SQL به زبان ساده

Transaction Log چیست؟ اگر کمی با مفاهیم پایگاه داده و به ویژه MSSQL Server آشنایی داشته باشید یا به عنوان یک DBA در جایی مشغول به کار هستید حتما با واژه ای به نام Transaction Log برخورد کرده اید. ترجمه لغوی این مفهوم به شکل Transaction یا تبادلات و Log یا صورت عملیات می باشد البته این ترجمه فقط برای این است که یک درک کلی از مفهوم این واژه داشته باشید. در پایگاه های داده ای مثل MSSQL Server مفهوم Transaction Log ممکن است با اسامی دیگری مثل Database Log یا Binary Log نیز شناخته شود ، در واقع اگر بخواهیم بصورت کلی این واژه را تعریف کنیم Transaction Log ها رکوردهایی هستند که در آنها فعالیت ها یا Action هایی که در پایگاه های داده انجام می شود ثبت می شوند.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

در این Log ها تمامی فعالیت ها و عملیات هایی که بر روی پایگاه های داده شما انجام می شود یا حتی توسط خود پایگاه داده انجام می شود ثبت شده و نتایج در قالب یک فایل مجزا از پایگاه داده اصلی ذخیره می شود. محل ذخیره سازی Transaction Log ها در SQL Server زمانی تعیین می شود که شما Database خود را ایجاد می کنید. اگر دقت کرده باشید زمانیکه می خواهید MSSQL Server را نصب کنید از شما محل قرارگیری ای Transaction Log ها مانند سایر موارد مرتبط با Logها از شما پرسیده می شود . همانطور که اشاره شد هرگونه تغییری که بر روی Database های شما انجام شود در Transaction Log ها ثبت می شود ، اما این سئوال پیش می آید که Log های ویندوز هم تمامی اتفاقاتی که در ویندوز می افتند را ثبت می کنند ، آیا Transaction Log صرفا وظیفه ثبت وقایع را دارند یا اینکه کار دیگری نیز انجام می دهند ؟

Transaction Log در SQL  سرور

نکته بسیار زیبا در خصوص Transaction Log و تفاوت آنها با Log های معمولی در این است که در واقع در Transaction Log ها اطلاعات و داده های موجود در Database ها در هر تراکنش یا تبادلی که انجام می شود وجود دارد و شما می توانید در صورت نیاز اطلاعات مورد نیاز برای بازگرداندن تغییرات به حالت اولیه قبل از انجام تراکنش ها را از همین Transaction Log ها بیرون بیاورید. زمانیکه قرار است در یک Database یک تراکنش یا Transaction انجام شود ، وضعیت فعلی قبل از تراکنش Database مورد نظر در Transaction Log ها ذخیره می شود و در صورت نیاز شما می توانید وضعیت اطلاعات و داده های خود را به حالت قبل از انجام عملیات Undo یا Rollback کنید.

هر Database در زمان ایجاد حداقل یک فایل با عنوان Transaction Log را در کنار خود دارد که از فایل اصلی Database مجزا می باشد ، شما این فایل را با پسوند LDF در SQL Server می شناسید ، برای مثال اگر شما پایگاه داده ای به نام itprodb در MSSQL Server ایجاد کنید در محل ایجاد این پایگاه داده دو فایل به نام های itprodb.mdf و itprodb.ldf ایجاد می شوند که mdf اطلاعات اصلی و ldf مربوط به Transaction Log های این Database می باشد. SQL Server برای اینکه بتواند کارایی Database های خود را بالا ببرد تمامی تغییراتی که در Data ها انجام می شود را در یک حافظه کش یا بهتر بگوییم در بافر نگهداری می کند.

آیتم هایی که به Database ها قرار است اضافه شوند بلافاصله در Transaction Log ها ذخیره می شوند اما اطلاعات بلافاصله در Database اصلی ذخیره نمی شوند. زمانیکه داده ها به درستی و کامل از بافر به فایل Data انتقال پیدا کرد و نوشته شد یک checkpoint در Transaction Log ها برای اعلام کردن این تراکنش ایجاد و نوشته می شود.فقط یک نکته را همیشه در خاطر داشته باشید ، Transaction Log ها در واقع مهمترین رکن در عملیات بازیابی از خطا یا Disaster Recovery هستند و زمانیکه یک سیستم سرور SQL دچار Crash می شود این Log ها می توانند به بازگردانی اطلاعات شما به شدت کمک کنند . این تنها یک معرفی کلی از روش کارکرد Transaction Log ها می باشد. امیدوارم مورد توجه شما قرار گرفته باشد .


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات