انتقل إلى محتوى الدرس

Four Isolation Levels in InnoDB مستويات العزل الأربعة بالمحرك

تعلّم مستويات عزل المعاملات وأقفال الصفوف في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

يتيح لك محرك InnoDB ضبط مستوى العزل للجلسة الحالية عبر الأمر SET SESSION TRANSACTION ISOLATION LEVEL بين أربعة مستويات قياسية مرتبة من الأقل عزلاً إلى الأعلى صرامةً:

  • READ UNCOMMITTED: يسمح بالقراءة المتسخة وغير المتكررة والشبحية؛ نادراً ما يُستخدم في الإنتاج لخطورة قراءة بيانات غير معتمدة.
  • READ COMMITTED: يمنع القراءة المتسخة تماماً، وينشئ لقطة قراءة جديدة مع كل جملة SELECT منفردة داخل المعاملة بحيث ترى أحدث البيانات المعتمدة.
  • REPEATABLE READ (المستوى الافتراضي في InnoDB): يثبت لقطة قراءة موحدة طوال المعاملة منذ أول عملية قراءة، فيمنع القراءة المتسخة وغير المتكررة والشبحية معاً.
  • SERIALIZABLE: أعلى درجات العزل؛ يحوّل جمل SELECT العادية إلى قراءات مقفلة (FOR SHARE) لمنع أي تعديل متزامن، لكنه يقلل سرعة التزامن.
+------------------+
| active_isolation |
+------------------+
| READ-COMMITTED   |
+------------------+
SQL
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

SELECT @@transaction_isolation AS active_isolation;

SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;

محاكي مستويات العزل وأقفال الصفوف في InnoDB