معاملة SQL هي سلسلة من عمليات SQL واحدة أو أكثر (على سبيل المثال.INSERT UPDATE DELETE) يتم تنفيذها كوحدة عمل واحدة. تضمن المعاملات نجاح جميع العمليات أو عدم تطبيق أي منها للحفاظ على سلامة البيانات.
الخصائص الرئيسية لمعاملات SQL: ACID
تخضع سلامة معاملات SQL لخصائص ACID التي تضمن معاملات قاعدة بيانات موثوقة. تعمل هذه الخصائص الأربع معًا لضمان بقاء قاعدة البيانات متسقة وموثوقة.
- الذرية: يمكن أن تكون نتيجة المعاملة ناجحة تمامًا أو غير ناجحة تمامًا. يجب التراجع عن المعاملة بأكملها في حالة فشل جزء منها.
- تناسق: تحافظ المعاملات على قيود التكامل عن طريق نقل قاعدة البيانات من حالة صالحة إلى أخرى.
- عزل: يتم عزل المعاملات المتزامنة عن بعضها البعض لضمان دقة البيانات.
- متانة: بمجرد تنفيذ المعاملة، تظل تعديلاتها سارية حتى في حالة فشل النظام.
أوامر التحكم في المعاملات SQL
في أوامر التحكم في معاملات SQL، قم بإدارة تنفيذ عمليات SQL مما يضمن سلامة وموثوقية معاملات قاعدة البيانات. تساعد هذه الأوامر في إدارة الالتزام بالبدء والتراجع عن التغييرات التي تم إجراؤها على قاعدة البيانات. فيما يلي أوامر التحكم في المعاملات الرئيسية في SQL الموضحة مع بناء الجملة والأمثلة لكل منها.
1. أمر بدء المعاملة
الBEGIN TRANSACTIONيمثل الأمر بداية معاملة جديدة. ستكون كافة عبارات SQL التي تتبع هذا الأمر جزءًا من نفس المعاملة حتى أCOMMIT أو ROLLBACK تمت مواجهته. لا يُجري هذا الأمر أي تغييرات على قاعدة البيانات، بل يبدأ المعاملة فقط.
بناء الجملة:
BEGIN TRANSACTION transaction_name ;مثال لمعاملة SQL مع سيناريو التحويل البنكي
دعونا نلقي نظرة على مثال للتحويل المصرفي بين حسابين. يوضح هذا المثال استخدام استعلامات متعددة في معاملة واحدة.
BEGIN TRANSACTION;
-- Deduct 0 from Account A
UPDATE Accounts
SET Balance = Balance - 150
WHERE AccountID = 'A';
-- Add 0 to Account B
UPDATE Accounts
SET Balance = Balance + 150
WHERE AccountID = 'B';
-- Commit the transaction if both operations succeed
COMMIT;
في حالة حدوث أي خطأ مثل مشكلة فيUPDATEالاستعلام الذي يمكنك استخدامهROLLBACKللتراجع عن كافة التغييرات التي تم إجراؤها أثناء المعاملة:
ROLLBACK;وهذا يضمن عدم وصول النظام إلى حالة غير متناسقة مثل خصم الأموال من حساب واحد دون إضافتها إلى حساب آخر.
BEGIN TRANSACTION TransferFunds;2. أمر الالتزام
الCOMMITيتم استخدام الأمر لحفظ جميع التغييرات التي تم إجراؤها أثناء المعاملة الحالية على قاعدة البيانات. بمجرد الالتزام بالمعاملة، تصبح التغييرات دائمة.
بناء الجملة:
COMMIT;مثال
هنا العينةStudentالجدول الذي سيتم استخدامه لتنفيذ العمليات في هذا المثال. يحتوي هذا الجدول على تفاصيل الطالب الأساسية مثل اسم الهوية والعمر والمعلومات الأخرى ذات الصلة التي سيتم معالجتها باستخدام مختلف أوامر التحكم في المعاملات.
جدول الطالبفيما يلي مثال لحذف تلك السجلات من الجدول التي لها عمر = 20 ثم إجراء التغييرات في قاعدة البيانات.
DELETE FROM Student WHERE AGE = 20;
COMMIT;
الإخراج
حلقة برنامج جافا
الإخراج3. أمر التراجع
الROLLBACKيتم استخدام الأمر للتراجع عن كافة التغييرات التي تم إجراؤها في المعاملة الحالية. يتم استخدامه عند حدوث خطأ أو عندما لا يمكن إكمال التغييرات المطلوبة. ستعود قاعدة البيانات إلى الحالة التي كانت عليها قبل BEGIN TRANSACTION تم إعدامه.
بناء الجملة:
ROLLBACK;مثال
احذف تلك السجلات من الجدول التي عمرها = 20 ثم قم بإرجاع التغييرات في قاعدة البيانات. في هذه الحالة DELETE تم التراجع عن العملية ولا يتم حفظ التغييرات التي تم إجراؤها على قاعدة البيانات.
DELETE FROM Student WHERE AGE = 20;
ROLLBACK;
الإخراج:
الإخراج4. أمر SAVEPOINT
أSAVEPOINTيستخدم لإنشاء نقطة تفتيش ضمن الصفقة. يمكننا العودة إلى محددةSAVEPOINTبدلاً من التراجع عن المعاملة بأكملها. وهذا يسمح لنا بالتراجع عن جزء من المعاملة بدلاً من التراجع عنها الصفقة بأكملها.
بناء الجملة:
SAVEPOINT SAVEPOINT_NAME;مثال
SAVEPOINT SP1;
//Savepoint created.
DELETE FROM Student WHERE AGE = 20;
//deleted
SAVEPOINT SP2;
//Savepoint created.
الإخراج:
الإخراجتوضيح:
من المثال أعلاه، نموذج الجدول 1، احذف تلك السجلات من الجدول التي يبلغ عمرها = 20 ثم قم بإرجاع التغييرات في قاعدة البيانات عن طريق الاحتفاظ بنقاط الحفظ. هنا SP1 هي أول نقطة حفظ يتم إنشاؤها قبل الحذف. في هذا المثال، تم إجراء عملية حذف واحدة. بعد الحذف مرة أخرى يتم إنشاء SAVEPOINT SP2.
5. العودة إلى نقطة الحفظ
الROLLBACK TO SAVEPOINTيسمح لنا الأمر باستعادة المعاملة إلى نقطة حفظ محددة والتراجع بشكل فعال عن التغييرات التي تم إجراؤها بعد تلك النقطة.
بناء الجملة:
ROLLBACK TO SAVEPOINT SAVEPOINT_NAME;مثال
لقد تم الحذف فلنفترض أننا غيرنا رأينا وقررنا الرجوع إلى نقطة الحفظ التي حددناها على أنها SP1 والتي كانت قبل الحذف. لذلك في هذه الحالةDELETEتم التراجع عن العملية وإرجاع المعاملة إلى الحالة التي كانت عليها فيSP1نقطة الحفظ.
ROLLBACK TO SP1;
//Rollback completed
الإخراج:
الإخراج6. قم بتحرير أمر SAVEPOINT
يتم استخدام هذا الأمر لإزالة نقطة SAVEPOINT التي قمنا بإنشائها. بمجرد إصدار SAVEPOINT، لم يعد بإمكاننا استخدام ROLLBACK أمر للتراجع عن المعاملات التي تم إجراؤها منذ آخر نقطة حفظ. يتم استخدامه لبدء معاملة قاعدة البيانات ويستخدم لتحديد خصائص المعاملة التالية.
بناء الجملة:
RELEASE SAVEPOINT SAVEPOINT_NAME;مثال
بمجرد نقطة الحفظSP2تم تحريره ولم يعد بإمكاننا العودة إليه.
RELEASE SAVEPOINT SP2; -- Release the second savepoint.لماذا استخدام المعاملات في الخدمات المصرفية؟
في هذه الحالة، بدون إجراء معاملة، فإنك تخاطر بسيناريوهات حيث يتم خصم الأموال من حساب واحد ولكن لا تتم إضافتها إلى الحساب الآخر، مما يترك النظام في حالة غير متسقة. تضمن المعاملات تجنب مثل هذه المشكلات من خلال ضمان نجاح كلتا العمليتين أو فشلهما معًا.
أنواع معاملات SQL
هناك أنواع مختلفة من المعاملات بناءً على طبيعتها والعمليات المحددة التي تقوم بها:
- قراءة المعاملات : يستخدم لقراءة البيانات فقط عادةً
SELECTالاستعلامات. - كتابة المعاملات : تتضمن تعديل البيانات في قاعدة البيانات باستخدام
INSERTUPDATEأوDELETEالعمليات. - المعاملات الموزعة : تمتد هذه المعاملات إلى قواعد بيانات متعددة وتضمن الاتساق عبرها.
- المعاملات الضمنية : يتم تشغيله تلقائيًا بواسطة SQL Server لعمليات معينة.
- المعاملات الصريحة : المعاملات التي يتم التحكم فيها يدويًا حيث يبدأ المستخدم وينهي المعاملة باستخدام
BEGIN TRANSACTIONCOMMITوROLLBACK.
مراقبة وتحسين معاملات SQL
للحفاظ على الأداء ومنع المشكلات، خذ في الاعتبار الأساليب التالية:
1. مراقبة الأقفال : تتبع سلوك القفل وضبط الاستعلامات لتقليل تعارضات القفل.
2. الحد من نطاق المعاملة : تحديد عدد الصفوف أو السجلات المتأثرة بالمعاملة لتسريع المعالجة.
3. استخدم المعالجة المجمعة : إذا كنت تتعامل مع كميات كبيرة من البيانات، قم بتقسيم العمليات إلى معاملات أو دفعات أصغر لتجنب إرباك النظام.
مسابقة مقترحة تحرير الاختبار 5 أسئلةأي من السيناريوهات التالية يصف بشكل أفضل انتهاك خاصية "العزل" في ACID؟
- أ
تترك المعاملة قاعدة البيانات في حالة تنتهك قيد المفتاح الأساسي.
- ب
هناك معاملتان يتم تشغيلهما بشكل متزامن لقراءة وكتابة نفس البيانات مما يؤدي إلى نتائج غير متناسقة.
- ج
يقوم المستخدم بتحديث السجل بنجاح ولكن تعطل النظام يؤدي إلى مسح التغيير.
- د
تفشل المعاملة في منتصف الطريق ويتم التراجع عن جميع تغييراتها.
يعد هذا مثالًا كلاسيكيًا لانتهاك العزل حيث تكون الحالة المتوسطة لمعاملة ما مرئية لمعاملة أخرى.
في أحد التطبيقات المصرفية، يتضمن تحويل الأموال الخصم من حساب واحد وإيداع حساب آخر. ما هي خاصية ACID التي تضمن اكتمال كلتا العمليتين أو عدم اكتمال أي منهما؟
- أ
عزل
- ب
الذرية
- ج
متانة
- د
تناسق
تضمن Atomicity إتمام جميع العمليات ضمن المعاملة بنجاح؛ وإلا فسيتم التراجع عن المعاملة بأكملها.
يتم تنفيذ المعاملة وإصدار "COMMIT". مباشرة بعد حدوث انقطاع التيار الكهربائي. ما هي خاصية ACID التي تضمن أن التغييرات التي تم إجراؤها بواسطة المعاملة لا تزال موجودة بعد إعادة تشغيل النظام؟
فرز مجموعة جافا
- أ
تناسق
- ب
الذرية
- ج
متانة
- د
عزل
المتانة هي الخاصية التي تضمن أنه بمجرد تنفيذ المعاملة، فإنها ستظل كذلك حتى في حالة انقطاع الطاقة أو تعطل النظام.
ما هو الغرض الأساسي من أمر "SAVEPOINT" في المعاملة؟
- أ
لارتكاب جزء من الصفقة.
- ب
لوضع علامة على نقطة في معاملة يمكنك الرجوع إليها لاحقًا.
- ج
لحفظ حالة المعاملة بشكل دائم.
- د
لإنهاء المعاملة وإجراء جميع التغييرات بشكل دائم.
يسمح "SAVEPOINT" بالتراجع الجزئي داخل المعاملة.
خذ بعين الاعتبار المعاملة التالية: 'START TRANSACTION; إدراج ...; نقطة الحفظ أ؛ تحديث ...؛ نقطة الحفظ ب؛ يمسح ...؛ العودة إلى نقطة الحفظ أ؛' ما هي حالة المعاملة بعد أمر "ROLLBACK"؟
- أ
يتم التراجع عن المعاملة بأكملها.
- ب
تم التراجع عن "الحذف" فقط.
- ج
يحدث خطأ لأنه لا يمكنك الرجوع إلى نقطة حفظ ليست الأحدث.
- د
تم حفظ "INSERT" ولكن تم التراجع عن "UPDATE" و"DELETE".
يؤدي الرجوع إلى "SAVEPOINT A" إلى التراجع عن جميع التغييرات التي تم إجراؤها بعد نقطة الحفظ تلك وهي "UPDATE" و"DELETE".
تم إكمال الاختبار بنجاح 2/5دقة : 0%قم بالدخول لمشاهدة الشرح 1/5 1/5 < Previous التالي >