در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

منظور از Transaction Log در SQL سرور چیست ؟

اگر کمی با مفاهیم پایگاه داده و به ویژه 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 ها می باشد. امیدوارم مورد توجه شما قرار گرفته باشد . ITPRO باشید.

نویسنده : محمد نصیری

منبع : انجمن تخصصی فناوری اطلاعات ایران

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#Backup__گیری_از_SQL_Server #کاربر_transaction_log_در_sql__سرور #آموزش_sql_server
6 نظر
Mehran Eshghi

با سلام واحترام

یک بخش از توضیحاتتون رو کامل متوجه نشدم:

"SQL Server برای اینکه بتواند کارایی Database های خود را بالا ببرد تمامی تغییراتی که در Data ها انجام می شود را در یک حافظه کش یا بهتر بگوییم در بافر نگهداری می کند. آیتم هایی که به Database ها قرار است اضافه شوند بلافاصله در Transaction Log ها ذخیره می شوند اما اطلاعات بلافاصله در Database اصلی ذخیره نمی شوند. زمانیکه داده ها به درستی و کامل از بافر به فایل Data انتقال پیدا کرد و نوشته شد یک checkpoint در Transaction Log ها برای اعلام کردن این تراکنش ایجاد و نوشته می شود"

منظور از ایتم ها اینجا همون مرود اطلاعات هست؟

با سپاس فراوان

محمد نصیری

Data Entry هایی که انجام میشه یا موارد ورودی به پایگاه داده منظورمون هست.

shahin69

ممنون از مقاله خوبتون

یه سوال وقتی Differential بکاپ میگیرم ایا از Transaction Log هم بکاپ کرفته میشه؟

یا باید جدا ازش بکاپ بگیرم

محمد نصیری

خیر Transaction Log در Backup نیست ... Backup یک تک فایل هست ...

shahin69

پس علاوه بر بکاپ full و Differential من باید یه job برای بکاپ گیری Transaction Log داشته باشم

و ریکاوری مد در حالت full بزارم

که برای ریکاوری اول اخرین full بکاپ و Differential بعدش باید اخرین Transaction Log برگردونم درسته؟

بعد این Transaction Log رو چطوری باید بکاپ بگیرم تا بتونم مثلا 5 دقیقه قبل از حادثه برگردونم ؟

محمد نصیری

موقع Backup فکر می کنم تیکی داشته باشه که میگه با Backup اینها رو هم بگیر

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....