زبان کنترل تراکنش (TCL) چیست؟
زبان کنترل تراکنش (TCL) یک زیرزبان SQL است که برای مدیریت تراکنشها در یک سیستم مدیریت پایگاه داده (DBMS) استفاده میشود. تراکنشها دنباله ای از یک یا چند عملیات SQL هستند که به عنوان یک واحد کاری واحد و اتمی در نظر گرفته میشوند، به این معنی که یا به طور کامل انجام میشوند یا اصلاً انجام نمیشوند.
دستورات TCL برای حفظ سازگاری و یکپارچگی دادهها، به ویژه هنگام کار با عبارات زبان دستکاری دادهها (DML) مانند INSERT، UPDATE و DELETE، بسیار مهم هستند. این عملیات DML در ابتدا موقتی هستند و برای دائمی کردن آنها یا معکوس کردن آنها در صورت بروز خطا، به دستورات TCL نیاز دارند.
دستورات اصلی در TCL عبارتند از:
COMMIT:
این دستور برای ذخیره دائمی تغییرات ایجاد شده در طول یک تراکنش در پایگاه داده استفاده میشود. پس از ثبت، تغییرات برای سایر کاربران قابل مشاهده میشوند و با ROLLBACK قابل بازگشت نیستند.
ROLLBACK:
این دستور برای خنثی کردن تمام تغییرات ایجاد شده در طول تراکنش فعلی و بازگرداندن پایگاه داده به حالت قبل از شروع تراکنش استفاده میشود. این امر به ویژه برای مدیریت خطا یا زمانی که نیاز به لغو یک سری عملیات در یک تراکنش باشد، مفید است. SAVEPOINT:
این دستور امکان ایجاد یک نقطه نامگذاری شده در یک تراکنش را فراهم میکند. این دستور امکان بازگشتهای جزئی را فراهم میکند، که در آن میتوانید تراکنش را به یک نقطه ذخیره خاص برگردانید بدون اینکه تمام تغییرات از ابتدای تراکنش لغو شوند.
SET TRANSACTION:
این دستور برای تنظیم ویژگیهای تراکنش فعلی، مانند سطح ایزوله یا وضعیت فقط خواندنی، استفاده میشود که بر نحوه تعامل تراکنش با سایر تراکنشهای همزمان تأثیر میگذارد.
TCL ویژگیهای ACID (اتمیک بودن، سازگاری، ایزوله بودن، دوام) تراکنشها را تضمین میکند و تغییرات دادهها را در یک محیط چند کاربره قابل اعتماد و قابل پیشبینی میکند.
در این مقاله، با درک مثالهای مختلف و موارد دیگر، در مورد فرم کامل TCL خواهیم آموخت.
فرم کامل TCL چیست؟
- TCL مخفف زبان کنترل تراکنش است.
- این زیرمجموعهای از SQL است که برای مدیریت تراکنشها در یک پایگاه داده استفاده میشود.
دستورات TCL
TCL شامل دستورات زیر است:
1. COMMIT
- دستور COMMIT برای ذخیره تمام تراکنشهایی که در طول تراکنش فعلی در پایگاه داده انجام شدهاند، استفاده میشود.
- پس از ثبت یک تراکنش، دائمی میشود و قابل بازگشت نیست.
- این دستور معمولاً در انتهای یک سری از دستورات SQL استفاده میشود تا اطمینان حاصل شود که تمام تغییرات ایجاد شده در طول تراکنش ذخیره میشوند.
Syntax:
COMMIT;
2. ROLLBACK
- دستور ROLLBACK برای لغو تمام تراکنشهایی که در طول تراکنش فعلی انجام شدهاند اما هنوز ثبت نشدهاند، استفاده میشود.
- این دستور برای بازگرداندن پایگاه داده به حالت قبلی خود در صورت بروز خطا یا در صورتی که تغییرات ایجاد شده مطلوب نباشند، مفید است.
Syntax:
ROLLBACK;
3. SAVEPOINT
دستور SAVEPOINT برای تعیین نقطهای در یک تراکنش استفاده میشود که بعداً میتوانیم به آن برگردیم.
این دستور امکان بازگشتهای جزئی در یک تراکنش را فراهم میکند و کنترل بیشتری بر روی بخشهایی از یک تراکنش که باید لغو شوند، فراهم میکند.
Syntax:
SAVEPOINT savepoint_name;
کاربردهای دستورات TCL
- COMMIT: پس از تغییرات دادهها (INSERT، UPDATE، DELETE) برای ذخیره تغییرات در پایگاه داده استفاده میشود.
- ROLLBACK: برای بازگرداندن تغییرات در صورت بروز مشکل، و تضمین یکپارچگی دادهها استفاده میشود.
- SAVEPOINT: برای ایجاد نقاط میانی در یک تراکنش که میتوانید به آنها برگردید، استفاده میشود و کنترل دقیقتری بر مدیریت تراکنشها ارائه میدهد.
- SET TRANSACTION: برای پیکربندی رفتار تراکنش استفاده میشود و از جداسازی و ثبات مناسب مطابق با الزامات اطمینان حاصل میکند.
مزایای TCL
- یکپارچگی دادهها: تضمین میکند که یا تمام عملیات درون یک تراکنش با موفقیت انجام شده یا هیچکدام با موفقیت انجام نشدهاند و ثبات را حفظ میکند.
- بازیابی خطا: امکان بازگرداندن تراکنشهای ناقص در صورت بروز خطا را فراهم میکند و از بهروزرسانیهای جزئی جلوگیری میکند.
- Savepoints: نقاط بازرسی میانی را در تراکنشها فراهم میکند و کنترل دقیقتری بر بازگشتها ارائه میدهد.
- مدیریت تراکنش: مدیریت تراکنشهای پیچیده را تسهیل میکند و توالیهای اجرای صحیح و جداسازی را تضمین میکند.
معایب TCL
- سربار عملکرد: کامیتها و رولبکهای مکرر میتوانند به دلیل عملیات اضافی ثبت وقایع و مدیریت، سربار عملکرد ایجاد کنند.
- پیچیدگی: مدیریت تراکنشها، به ویژه در سیستمهای بزرگ و توزیعشده، میتواند پیچیده و مستعد خطا شود.
- قفل منابع: تراکنشهای طولانی میتوانند قفلهایی روی منابع نگه دارند که به طور بالقوه منجر به رقابت و کاهش همزمانی میشود.
عملکرد فناوری TCL
- شروع یک تراکنش: معمولاً یک تراکنش به طور ضمنی با انجام یک عملیات DML (INSERT، UPDATE، DELETE) یا به طور صریح با دستور BEGIN TRANSACTION شروع میشود.
- انجام عملیات: اجرای یک سری عملیات پایگاه داده. تغییرات در حالت تعلیق نگه داشته میشوند و تا زمان ثبت برای سایر تراکنشها قابل مشاهده نیستند.
- استفاده از Savepoints: به صورت اختیاری، نقاط ذخیرهای را برای علامتگذاری نقاط خاص در تراکنش ایجاد کنید.
- Commit یا Rollback: از COMMIT برای ذخیره دائمی همه تغییرات استفاده کنید. از ROLLBACK برای لغو تغییرات استفاده کنید. در صورت استفاده از نقاط ذخیره، میتوانید بدون تأثیر بر عملیات قبلی، به یک نقطه ذخیره خاص برگردید.
- پایان تراکنش: تراکنش با COMMIT یا ROLLBACK پایان مییابد و هرگونه منابع و قفلهای نگه داشته شده را آزاد میکند.
دستورات TCL برای حفظ ویژگیهای ACID (اتمیک بودن، سازگاری، جداسازی، دوام) تراکنشها ضروری هستند، که برای رفتار قابل اعتماد و قابل پیشبینی پایگاه داده بسیار مهم هستند.
مثالی از دستورات TCL
جدول Student زیر را در نظر بگیرید:
| Name | Marks |
|---|---|
| John | 79 |
| Jolly | 65 |
| Shuzan | 70 |
مثال استفاده از COMMIT و ROLLBACK
بیایید نام یک دانشآموز را از «Jolly» به «Sherlock» در جدول STUDENT بهروزرسانی کنیم و مطمئن شویم که تغییر اعمال شده است.
UPDATE STUDENT SET NAME = ‘Sherlock’ WHERE NAME = ‘Jolly’; COMMIT; ROLLBACK;
با استفاده از این دستور میتوانید رکورد را بهروزرسانی کرده و با استفاده از دستور COMMIT آن را بهطور دائم ذخیره کنید.
حالا بعد از COMMIT:
| Name | Marks |
|---|---|
| John | 79 |
| Sherlock | 65 |
| Shuzan | 70 |
اگر commit انجام نشده باشد، تغییرات ایجاد شده توسط دستور update میتوانند به حالت قبل برگردند.
حال اگر هیچ COMMIT انجام نشده باشد.
UPDATE STUDENT SET NAME = ‘Sherlock’ WHERE STUDENT_NAME = ‘Jolly’;
بعد از دستور update جدول به صورت زیر خواهد بود:
| Name | Marks |
|---|---|
| John | 79 |
| Sherlock | 65 |
| Shuzan | 70 |
حال اگر ROLLBACK روی جدول بالا انجام شود:
rollback;
پس از Rollback:
| Name | Marks |
|---|---|
| John | 79 |
| Jolly | 65 |
| Shuzan | 70 |
مثال استفاده از SAVEPOINT
اگر در جدول بالا، savepoint انجام شود:
INSERT into STUDENT
VALUES ('Jack', 95);
Commit;
UPDATE NAME
SET NAME= ‘Rossie’
WHERE marks= 70;
SAVEPOINT A;
INSERT INTO STUDENT
VALUES (‘Zack’, 76);
Savepoint B;
INSERT INTO STUDENT
VALUES (‘Bruno’, 85);
Savepoint C;
SELECT *
FROM STUDENT;
| Name | Marks |
|---|---|
| John | 79 |
| Jolly | 65 |
| Rossie | 70 |
| Jack | 95 |
| Zack | 76 |
| Bruno | 85 |
حالا اگر به Savepoint B برگردیم:
Rollback to B;
شروع میشود
جدول حاصل به صورت زیر خواهد بود-
| Name | Marks |
|---|---|
| John | 79 |
| Jolly | 65 |
| Rossie | 70 |
| Jack | 95 |
| Zack | 76 |
حالا اگر به نقطه ذخیره A برگردیم:
Rollback to A;
جدول حاصل به صورت زیر خواهد بود:
| Name | Marks |
|---|---|
| John | 79 |
| Jolly | 65 |
| Rossie | 70 |
| Jack | 95 |
خب، همه چیز در مورد دستورات TCL در SQL (زبان کنترل تراکنش) به همراه مثال بود.
نتیجهگیری
دستورات TCL، از جمله COMMIT، ROLLBACK و SAVEPOINT، برای مدیریت تراکنشها در پایگاههای داده SQL ضروری هستند. آنها تضمین میکنند که تغییرات یا به طور دائم اعمال میشوند یا به درستی لغو میشوند، بنابراین از یکپارچگی دادهها محافظت میکنند و مکانیسمهای بازیابی خطای قوی ارائه میدهند.
مقاله های مرتبط:
1– کدام پایگاه داده برای یادگیری ماشینی بهتر است؟
2- تحلیل متن (Text Analytics) چیست و چگونه پایگاه های داده گراف می توانند کمک کنند ؟
3- پایگاه اطلاعات مکانی و داده های مکانی (Geospatial Data – GIS)
4-داشبورد سازی در نرم افزار تبلو و تجسم داده ها
