Exasol از طریق اجرای یک سیستم مدیریت معاملات (TMS) توانایی چند کاربر را تضمین می کند. این بدان معنی است که درخواست های کاربران مختلف می توانند به طور موازی پردازش شوند. در این بخش مفهوم اساسی معاملات و همچنین نکات و توصیه های مربوط به کار با TMS Exasol توضیح داده شده است.
مفهوم
معامله شامل چندین بیانیه SQL است. اینها یا با بیانیه تعهد تأیید شده اند یا با بیانیه بازپرداخت خنثی می شوند.
مثال
یک سیستم مبتنی بر معامله ، حفظ امنیت کامل معاملات را تضمین می کند. هر معامله یک نتیجه صحیح را برمی گرداند و پایگاه داده را در حالت سازگار قرار می دهد. برای اطمینان از این ، معامله باید با اصول اسیدی مطابقت داشته باشد:
- اتمی: معامله به طور کامل اجرا شده است یا اصلاً نیست.
- قوام: معامله به قوام داخلی بانک اطلاعاتی داده می شود.
- جداسازی: معامله به گونه ای اجرا می شود که گویی تنها معامله در سیستم است.
- دوام: کلیه تغییرات در یک معامله تکمیل شده با تعهد دست نخورده باقی مانده است.
Exasol از سطح جداسازی معامله سریال پشتیبانی می کند. این نشان می دهد که هر معامله به گونه ای انجام می شود که گویی بخشی از یک دنباله است حتی اگر معاملات به صورت موازی انجام شود. سریال سازی به اطمینان از قوام داده ها کمک می کند ، اما همچنین می تواند منجر به برخی از موارد مانند:
- معاملات قبل از ادامه معاملات باید منتظر تعهد از معامله قبلی باشند.
- برخورد معامله برای معاملات مختلط خواندن/نوشتن ، که منجر به بازگشت اجباری یک معامله می شود.
برای اطمینان از رعایت اصول اسید ، هر معامله منوط به ارزیابی TMS است. در صورت لزوم ، TMS مداخله می کند و به طور خودکار درگیری ها را از طریق اجرای زمان انتظار یا با استفاده از معاملات در صورت تصادف اصلاح می کند.
اطلاعات مربوط به تعارضات معامله در حال وقوع در جداول سیستم exa_user_impersonation _last_day و exa_dba_transaction _conflicts موجود است.
برای نگه داشتن تعداد معاملات برخورد تا حد ممکن ، Exasol از "قالب چندپایی" پشتیبانی می کند. این چندین نسخه از هر شیء پایگاه داده (به طور موقت) را حفظ می کند. این اجازه می دهد تا توان سیستم (تعداد معاملات کاملاً اجرا شده در هر واحد زمان) در مقایسه با پایگاه داده های دارای "قالب SingleCopy" به طور قابل توجهی افزایش یابد.
معاملات جداگانه توسط TMS با یک روش قفل از یکدیگر جدا می شوند. دانه بندی روش قفل همیشه یک شیء کل پایگاه داده را احاطه کرده است ، به عنوان مثال ، یک طرح یا یک جدول. این بدان معنی است که دو معاملات نمی توانند به طور همزمان ردیف های مختلف یک جدول را به روز کنند.
با توجه به TMS ، برای هر معامله ای که شروع می شود ، یکی از سناریوهای زیر را خواهید داشت:
- معامله تا پایان انجام می شود.
- معامله تا پایان انجام می شود ، اما زمان انتظار به دلیل نیاز به انتظار برای پایان دادن به معاملات دیگر اتفاق می افتد.
- معامله به دلیل برخورد با سایر معاملات نمی تواند انجام شود و به عقب برگردد. در این حالت ، می توانید بعداً معامله را تکرار کنید.
تفاوت با سیستم های دیگر
برخی از سیستم های پایگاه داده دیگر فقط تا حدی مدل معامله را اجرا کرده و گاهی اوقات معاملات را از کاربر پنهان می کنند. به عنوان مثال ، سیستم ممکن است به طور مستقیم بیانیه های طرحواره ای (ایجاد طرح یا ایجاد جدول) را به طور مداوم در پایگاه داده ذخیره کند.
این امر خطر برخورد را هنگام اجرای همزمان معاملات با اظهارات طرحواره کاهش می دهد ، اما ضرر یک بازگشت را دارد. به عنوان مثال ، نمی تواند بیانیه طرحواره ای را که اجرا شده است خنثیسازی کند. در مقابل ، Exasol TMS معاملات کاربر را پنهان نمی کند و به طور مداوم اظهارات را در پایگاه داده به طور خودکار ذخیره نمی کند.
توصیه ها
برای به حداقل رساندن خطر درگیری های معامله در حین دسترسی موازی توسط چندین کاربر ، رابط های Exasol (درایورها) این گزینه را دارندAutoCommit = روشنبه طور پیش فرض تنظیم شده است. که درمربوط به خودکشیحالت ، بیانیه های SQL با موفقیت تکمیل شده به طور خودکار به طور مداوم ذخیره می شوند.
با این حال ، برای بخش هایی که بر عملکرد سیستم تأثیر می گذارد ، بهتر است بعد از هر بیانیه SQL تعهد نکنید. این درست است اگر جداول میانی ، که قصد ذخیره آنها به طور مداوم ندارند ، در اسکریپت ها محاسبه می شوند. بنابراین ، می توانید این گزینه را با دستور غیرفعال کنیدAutoCommit را خاموش کنید.
AutoCommit = خاموشخطر تصادفات را افزایش می دهد و می تواند بر سایر کاربران تأثیر منفی بگذارد.
اگرمربوط به خودکشیحالت غیرفعال است ، گزینه-xدر کنسول Exaplus توصیه می شود. در صورت بروز خطایی در هنگام بازگشت خودکار پس از درگیری معامله ، این امر باعث می شود که اسکریپت SQL سقط شود. اگر اسکریپت های دسته ای بدون این گزینه شروع شوند ، پردازش دنباله بیانیه SQL با وجود خطا ادامه می یابد ، می تواند به نتایج نادرست منجر شود و باید از آن جلوگیری کرد.
بازار رمزارزها...
ما را در سایت بازار رمزارزها دنبال می کنید
برچسب : نویسنده : محمود کیانوش بازدید : 28 تاريخ : چهارشنبه 31 خرداد 1402 ساعت: 22:52