گاهی اوقات میخواهیم شاهد اجرای چندین دستور با هم باشیم و هنگامی که یکی از دستورات با مشکل مواجه شد مجموعه ی دستورات اجرا نشوند. (مانند عملیاتهای بانکی). روشی که ما در قبل برای اجرای دستورات استفاده میکردیم، مناسب این کار نبود؛ به همین دلیل میخواهیم امروز با مفهوم تراکنش آشنا شویم. با ما در الفبایت همراه باشید.
مفهوم تراکنش چیست؟
تراکنش در SQL شامل یک یا چندین دستور است که به عنوان یک واحد عمل میکند. اگر در طی اجرای یک تراکنش دستوری با موفقیت اجرا نشود کل واحد از بین میرود و پایگاه داده به حالت قبلی باز میگردد. پس یک تراکنش زمانی موفق خواهد بود که تمام دستورات آن با موفقیت اجرا شوند.
خواص تراکنش:
- خاصیت یکپارچگی (Atomicity)
- خاصیت سازگاری (Consistency)
- خاصیت تفکیک (Isolation)
- خاصیت پایداری(Durability)
موارد بالا خواص تراکنشها در MySQL هستند که به توضیح آنها میپردازیم.
- یکپارچگی: یکپارچگی به معنای آن است که تراکنش به صورت یک واحد غیر قابل تفکیک در نظر گرفته شود.
- سازگاری: سازگاری زمانی وجود دارد که اگر تراکنش با موفقیت انجام نشود اعمال اتفاق افتاده در تراکنش به حالت قبل باز میگردد.
- تفکیک: این خاصیت باعث آن میشود که هر تراکنش در فضای خود و جدا از بقیه صورت گیرد و نتایج آن فقط در صورت انجام شدن صورت گیرد.
- پایداری: به معنای آن است که تغییرات حاصل بعد از تراکنش پایدار میماند.
حروف اول این چهار خاصیت به ترتیب کلمه ی ACID را تشکیل میدهند و فقط جدول نوع InnoDB از ACID پشتیبانی میکند.
قفل گذاری:
همانطور که در مطلب شاخصبندی جدولها در MySQL توضیح داده شد قفل کردن انواع جدولها باهم راهکارهای متفاوتی دارند. برای ایجاد یک محیط برای تراکنش باید جدول قفل شود.
انواع قفل:
- قفل جدول: یک جدول را کامل قفل میکند. حتی شاید بقیه کاربران نتوانند عمل خواندن را نیز روی جدول انجام دهند.
- قفل صفحه: چندین سطر از جدول را قفل میکند.
- قفل سطر: تنها یک سطر از جدول را قفل میکند.
جدول نوع MyISAM از قفل جدول، جدول نوع BDB از قفل صفحه ,جدول نوع InnoDB از قفل سطر پشتیبانی میکنند.
خب در اینجا به پایان قسمت اول از آموزش تراکنشها در MySQL میرسیم.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما درمیان بگذارید.
با ما در الفبایت همراه باشید…