خصائص ACID والحالات الشاذة
راجع الذرية والاتساق والعزل والاستمرارية، والحالات الشاذة الكلاسيكية الأربع: القراءة المتسخة، والقراءة غير القابلة للتكرار، والوهم، والتحديث المفقود
خصائص ACID والحالات الشاذة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
ACID
تكون المعاملة موثوقة عندما تكون:
- ذرّية — إمّا أن تنجح بالكامل أو لا يحدث شيء
- متسقة — تنقل قاعدة البيانات من حالة صالحة إلى حالة صالحة أخرى
- معزولة — لا تتداخل المعاملات المتزامنة مع بعضها
- دائمة — بعد اعتمادها، تبقى البيانات محفوظة حتى بعد تعطل النظام
معاملة في SQL
ضعوا العمليات بين BEGIN ... COMMIT:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
-- If anything fails, ROLLBACK leaves both rows unchanged.الذرّية عمليًا
إذا فشل UPDATE الثاني، فسيتم التراجع عن الأول — ولن تُفقد الأموال جزئيًا:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Crash here, or ROLLBACK: account 1 is unchanged.الاتساق
يتم التحقق من القيود (NOT NULL وCHECK وFK) عند الاعتماد. وتفشل المعاملة التي من شأنها أن تترك قاعدة البيانات في حالة غير صالحة:
BEGIN;
INSERT INTO orders (user_id, total) VALUES (999, 100); -- FK fails on commit if user 999 doesn't exist.
COMMIT;
-- ERROR: insert or update violates foreign key constraint
-- ROLLBACK happens automatically.العزل: لماذا يهم
يمكن لمعاملتين متزامنتين إفساد رؤية كل منهما لبيانات الأخرى إذا لم يتوفر العزل. ومن الحالات الشائعة:
- قراءة البيانات المتسخة — قراءة بيانات لم يتم اعتمادها
- القراءة غير القابلة للتكرار — يعرض الاستعلام نفسه صفوفًا مختلفة
- القراءة الوهمية — ظهور صفوف جديدة أثناء المعاملة
- التحديث المفقود — يطغى أحد التحديثين على الآخر
قراءة البيانات المتسخة
قراءة صف غيّرته معاملة أخرى لكنها لم تعتمد التغيير بعد. تمنع PostgreSQL ذلك في جميع مستويات العزل.
القراءة غير القابلة للتكرار
تقرأون الصف 1، ثم تعتمد معاملة أخرى تحديثًا للصف 1، ثم تعيدون القراءة — فتجدون قيمة مختلفة.
القراءة الوهمية
تنفذون SELECT COUNT(*) مرتين ضمن معاملة واحدة. وبين الاستعلامين، تعتمد معاملة أخرى عملية INSERT — فيكون العدد الثاني أكبر.
التحديث المفقود
تقرأ معاملتان كل منهما الرصيد=100، وتكتب كل منهما balance=balance-50، ثم تعتمدان التغيير — فيُفقد أحد التحديثين بمقدار -50.
الدوام
بمجرد أن يعيد COMMIT النتيجة، يكون التغيير محفوظًا على القرص (أو منسوخًا، حسب الإعدادات). ولن يؤدي تعطل النظام بعد ذلك بميلي ثانية واحدة إلى فقدانه. تحقق PostgreSQL الدوام باستخدام WAL (Write-Ahead Logging).
الاعتماد التلقائي
تكون كل عبارة، افتراضيًا، معاملة مستقلة:
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
-- Implicitly: BEGIN; statement; COMMIT;نقطة الحفظ
التراجع الجزئي داخل المعاملة:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
SAVEPOINT before_step2;
UPDATE accounts SET balance = balance + 100 WHERE id = 999;
-- ERROR — but we can recover:
ROLLBACK TO SAVEPOINT before_step2;
-- continue
COMMIT;مراجعة
المعاملات هي شبكة الأمان لقواعد البيانات العلائقية.
- ACID: ذرّية، ومتسقة، ومعزولة، ودائمة
- أربع حالات شائعة للتعارض
- BEGIN ... COMMIT أو ROLLBACK
- استخدام SAVEPOINT للتراجع الجزئي
تحقق سريع
ما الحالة التي تحدث عندما تقرأ معاملتان القيمة نفسها، ثم تعدلانها، ثم تعتمدان التغيير كلتاهما؟
تعلم SQL مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 46
- الدروس
- 183
الأسئلة الشائعة
هل درس «خصائص ACID والحالات الشاذة» مجاني؟
نعم — نص درس «خصائص ACID والحالات الشاذة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «خصائص ACID والحالات الشاذة»؟
راجع الذرية والاتساق والعزل والاستمرارية، والحالات الشاذة الكلاسيكية الأربع: القراءة المتسخة، والقراءة غير القابلة للتكرار، والوهم، والتحديث المفقود تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «خصائص ACID والحالات الشاذة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- خصائص ACID والحالات الشاذة
- مستويات العزل: READ COMMITTED وREPEATABLE READ وSERIALIZABLE
- حالات الجمود: الكشف والتجنب
- القفل التفاؤلي مقابل القفل التشاؤمي