ايران ويج

نسخه‌ی کامل: مشکل با ترگزیشن در pdo
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام
من یه کلاس dal بر پایه pdo ساختم که در کل پروژه استفاده میشه

وقتی میخواهم از ترگزیشن استفاده کنم قبلش این کارو انجام میدم setAttribute(PDO::ATTR_AUTOCOMMIT,false); وقتی اولین کوئری رو execute میکنم مقدار این خاصیت خود به خود True میشه و موقع commit میگه ترگزیشن فعالی وجود نداره

مشکل از کجاست و چطور میشه حلش کرد؟
با تشکر
خب مشکل از اونجا ناشی میشه که myisam قابلیت پشتیبانی از ترنگزیشن رو نداره و به علت ساده بودن و سرعت بالا در کوئری تا mysql 5 از اون به عنوان موتور به صورت پیشفرض استفاده میشد
اما برای پروزه های بزرگ و پروزه هایی که نیاز به ترنگزیشن هست بهتره از موتور INNODB استفاده بشه که محاسن زیادی داره از جمله پشتیبانی از ترنگزیشن
سرعت بالا در اجرای عملیات insert-delete-update
safe crash در موقع اجرای عملیات روی بانک
نیاز نداشتن به Repair در هنگام بروز مشکل
از mysql 5.2 به بعد موتور پیشفرض روی INNODB قرار گرفت
(innodb در نسخه های قدیمی مشکلات و کمبودهایی داشت نظیر پشتیبانی نکردن از full text index که در نسخه های جدید همه اینها رفع شده)
توجه داشته باشید سرعت select در myisam حدود 15% بیشتر از INNODB میباشد