دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۲
  • آبان

جلسه ۲۲ : transaction در MySQL

  • دسته‌بندی‌ها :
جلسه ۲۲ : transaction در MySQL
    • جزئیات
    • نوع محتواآموزش تصویری

      مقدمه

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

      آشنایی با transaction در MySQL

      در ادامه ی این آموزش با ویژگی transaction در MySQL و انواع آن آشنا خواهید شد.

      خصوصیات یک ویژگی transaction در MySQL

      transaction ها شامل ۴ خصوصیت استاندارد می باشند، که در مخفف ACID خلاصه می شود:

      • Atomicity : این تضمین می کند که تمام عملیات در واحد کار با موفقیت انجام شده است، در غیر این صورت خطا رخ می دهد.
      • Consistency : این تضمین می کند که وضعیت دیتابیس به درستی طی این عملیات دستکاری تغییر کرده می کند.
      • Isolation : این transaction ها را قادر می سازد تا به صورت مستقل از یکدیگر عمل کنند.
      • Durability : این اطمینان حاصل می کند که نتیجه یک transaction مهم در صورت خرابی سیستم ادامه می یابد.

      در MySQL وضعیت transaction ها با BEGIN WORK شروع شده و با COMMIT یا ROLLBACK پایان می یابد.

      COMMIT و ROLLBACK

      دو کلمه ی کلیدی Commit و Rollback به طور عمده برای Transaction های MySQL استفاده می شود.

      • هنگامی که یک عملیات موفق انجام شود، دستور COMMIT باید صادر شود تا تغییرات در همه جداول مرتبط در عملیات انجام شود.
      • اگر یک خطا اتفاق بیفتد، یک دستور ROLLBACK باید صادر شود تا هر جدولی که در عملیات به حالت قبلی رجوع می شود را نشان دهد.

      شما می توانید رفتار یک transaction را با تنظیم متغیر جلسه به نام AUTOCOMMIT کنترل کنید.

      اگر AUTOCOMMIT با مقدار ۱ (به طور پیش فرض) تنظیم شده باشد، پس هر دستور SQL (در یک معامله یا نه) یک Transaction کامل است و وقتی به پایان رسید، به صورت پیش فرض انجام می شود.

      وقتیکه AUTOCOMMIT مقدار ۰ داشته باشد (با تنظیم SET AUTOCOMMIT = 0 ) سری بعدی از دستورات مثل یک Transaction عمل می کند و هیچ فعالیتی تا زمانی که دستور COMMIT اجرا نشود، فعال نمی شود.

      شما می توانید این Query ها را با استفاده از تابع ()mysql_query در PHP اجرا کنید.

      یک مثال عمومی از Transaction

      این مجموعه ی رویدادها به زبان برنامه نویسی مورد استفاده بستگی دارد.

      شروع transaction با اجرای دستور BEGIN WORK در دستورات SQL است.

      اجرای یک یا بیشتر دستورات SQL نظیر SELECT, INSERT, UPDATE یا DELETE.

      بررسی کنید که آیا هیچ خطایی وجود ندارد و همه چیز مطابق نیاز شماست.

      اگر خطایی وجود داشته باشد، یک دستور ROLLBACK صادر می کند، در غیر این صورت دستور COMMIT را اجرا می کند.

      انواع Transaction-Safe در MySQL

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

      با این حال، آنها امن و تضمین شده نیستند. اگر شما قصد استفاده از transaction در MySQL را دارید، باید جدول های خود را به روش خاصی ایجاد کنید.

      انواع مختلفی از جداول وجود دارد که از transaction ها پشتیبانی می کنند اما محبوب ترین MyISAM است.

      پشتیبانی از جداول MyISAM نیاز به یک پارامتر کامپایل خاص هنگام کامپایل MySQL از منبع دارد.

      شما باید MySQL سازگار با جداول MyISAM را داشته باشید، در غیر این صورت باید آن را دانلود نمائید.

      اگر MySQL از MyISAM پشتیبانی می کند، به سادگی کافیست تعریف TYPE = MyISAM را به دستور ایجاد جدول اضافه کنید.

      برای مثال کد زیر یک جدول MyISAM را ایجاد می کند که tcount_tbl نام دارد :

      مثال : 

      همچنین می توانید از جداول GEMINI or BDB نیز استفاده کنید که البته این به نسخه ی نصب MySQL شما بستگی دارد.

      کلام آخر

      اگر می خواهید چنیدن QUERY مختلف را در MySQL در قالب یک فرآیند واحد انجام دهید، استفاده از ویژگی transaction در MySQL به شما توصیه می شود، البته قبل از هر کاری از اینکه نسخه ی MySQL نصب شده ی شما از انواع transaction پشتیبانی می کند اطمینان حاصل کنید.

      QR:  جلسه ۲۲ : transaction در MySQL
      به اشتراک بگذارید