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

Concurrency Read Phenomena Explained ظواهر القراءة المتوازية الثلاث

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

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

الصف 1 صورة توضيحية
مخطط توضيحي لدرس مستويات عزل المعاملات وأقفال الصفوف في MySQL
مخطط توضيحي لدرس مستويات عزل المعاملات وأقفال الصفوف في MySQL

عندما تتعامل مئات الجلسات المتزامنة مع نفس الجداول قراءةً وكتابةً، يحدد معيار SQL القياسي ثلاث ظواهر تزامن (Read Phenomena) صُممت مستويات العزل لمنعها:

  • القراءة المتسخة (Dirty Read): أن تقرأ الجلسة (أ) بيانات عدلتها الجلسة (ب) قبل اعتمادها؛ فإذا نفذت الجلسة (ب) أمر ROLLBACK لاحقاً، تكون الجلسة (أ) قد بنت قرارها على بيانات وهمية.
  • القراءة غير القابلة للتكرار (Non-Repeatable Read): أن تقرأ الجلسة (أ) نفس الصف مرتين داخل معاملة واحدة فتجد قيمته قد تغيرت لأن الجلسة (ب) اعتمدت أمر UPDATE بين القراءتين.
  • القراءة الشبحية (Phantom Read): أن تنفذ الجلسة (أ) استعلام نطاق شرطي مرتين فتظهر صفوف جديدة لم تكن موجودة لأن الجلسة (ب) اعتمدت أمر INSERT ضمن ذلك النطاق.
  • SELECT @@transaction_isolation: يستعلم عن مستوى العزل النشط في الجلسة والخادم (REPEATABLE-READ افتراضياً في MySQL 8).
+-------------------+-------------------+
| session_isolation | global_isolation  |
+-------------------+-------------------+
| REPEATABLE-READ   | REPEATABLE-READ   |
+-------------------+-------------------+
SQL
SELECT @@transaction_isolation AS session_isolation,
       @@global.transaction_isolation AS global_isolation;

START TRANSACTION;
SELECT account_id, balance FROM wallet_ledgers WHERE account_id = 101;
COMMIT;