في هذا الدرس 6تصفّح المواضيع
عندما تحتاج إلى إفراغ جدول مرحلي أو جدول سجلات من كافة البيانات مع الاحتفاظ ببنيته الهندسية وأعمدته جاهزة للاستخدام مجدداً، نفّذ الأمر TRUNCATE TABLE table_name. يُصنَّف هذا الأمر ضمن لغة تعريف البيانات DDL، ويعيد الجدول إلى حالة الصفر الفارغة لحظياً مهما بلغت ملايين الصفوف المخزنة فيه.
-- Empty all rows instantly while keeping the table structure
TRUNCATE TABLE audit_events;
DESCRIBE audit_events;
بدلاً من المرور على كل صف لحذفه بشكل منفرد، ينفّذ محرك InnoDB أمر TRUNCATE TABLE عبر إزالة مساحة التخزين الحالية وإنشاء ملف .ibd جديد وفارغ تماماً بنفس تعريفات الأعمدة المحفوظة في قاموس البيانات. وتؤدي هذه الآلية إلى تحرير المساحة التخزينية وإعادتها لنظام التشغيل فوراً.
-- Verify table blueprint and reclaimed status after TRUNCATE
SHOW CREATE TABLE audit_events;
SHOW TABLE STATUS;
عندما يصبح الجدول بأكمله غير مستخدم وتريد إزالة بياناته وهيكله الهندسي نهائياً من قاعدة البيانات، نفّذ الأمر DROP TABLE table_name. يمسح هذا الأمر سجل الجدول من قاموس بيانات MySQL 8، ويحذف ملف .ibd الخاص به من القرص الصلب مع كافة تعريفات أعمدته.
-- Permanently remove an obsolete table and its schema blueprint
DROP TABLE products_old;
SHOW FULL TABLES;
تؤدي محاولة حذف جدول غير موجود إلى إطلاق الخطأ رقم 1051 وتوقف التنفيذ. إن إضافة شرط التحقق IF EXISTS في الصيغة DROP TABLE IF EXISTS table_name يحوّل عدم وجود الجدول إلى مجرد تنبيه غير قاتل يمكن استعراضه بأمر SHOW WARNINGS، مما يجعل سكربتات التنظيف تعمل بأمان في جميع البيئات.
-- Safely drop one or more tables without failing if missing
DROP TABLE IF EXISTS
products_archive,
legacy_Ghost_table;
SHOW WARNINGS;
رغم أن الجداول المؤقتة تُحذف تلقائياً عند إغلاق الاتصال، يُوصى هندسياً في العمليات الطويلة بحذفها صراحةً فور انتهاء الحاجة إليها لتحرير ذاكرة الخادم. احرص دائماً على تضمين الكلمة المفتاحية TEMPORARY في الأمر DROP TEMPORARY TABLE IF EXISTS temp_name لضمان عدم المساس بأي جدول دائم حتى لو حدث خطأ في التسمية.
-- Explicitly release session temporary tables with TEMPORARY guard
DROP TEMPORARY TABLE IF EXISTS
session_price_buffer,
temp_products_copy;
| وجه المقارنة | TRUNCATE TABLE tbl | DROP TABLE [IF EXISTS] tbl | DROP TEMPORARY TABLE IF EXISTS |
|---|---|---|---|
| هيكل الجدول والأعمدة | يُحفظ سليماً في قاموس البيانات | يُحذف نهائياً بالكامل | يُحذف من الجلسة الحالية |
| صفوف البيانات المخزنة | تُفرّغ بالكامل (يعود إلى 0 صفوف) | تُحذف بالكامل | تُحذف من ذاكرة الجلسة |
ملف التخزين الفيزيائي .ibd | يُعاد إنشاؤه كملف جديد فارغ | يُزال نهائياً من القرص الصلب | تُحرَّر مساحته من المساحة المؤقتة |
يدعم شرط IF EXISTS؟ | لا | نعم (DROP TABLE IF EXISTS) | نعم |
| هل يؤثر على الجداول الدائمة؟ | نعم | نعم | لا (يقتصر على الجداول المؤقتة فقط) |
ملخص الدرس: قارنّا في هذا الدرس بين أمرَي TRUNCATE TABLE وDROP TABLE في MySQL 8، وتعرّفنا على آلية إعادة إنشاء مساحة الجدول الفارغة مع الحفاظ على الأعمدة عند التفريغ، مقابل الإزالة النهائية للجدول عبر DROP TABLE IF EXISTS، وحماية الجداول الدائمة عبر DROP TEMPORARY TABLE.
الخطوة التالية والدرس القادم: بإتمام الوحدة الرابعة الخاصة بإدارة الجداول، نكون مستعدين للانتقال إلى الوحدة الخامسة (قيود الجداول في MySQL) بدءاً بالدرس السادس عشر حول قيود القيم الإلزامية والافتراضية.
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
قارنّا في هذا الدرس بين أمرَي TRUNCATE TABLE وDROP TABLE في MySQL 8، وتعرّفنا على آلية إعادة إنشاء مساحة الجدول الفارغة مع الحفاظ على الأعمدة عند التفريغ، مقابل الإزالة النهائية للجدول عبر DROP TABLE IF EXISTS، وحماية الجداول الدائمة عبر DROP TEMPORARY TABLE. الخطوة التالية: بإتمام الوحدة الرابعة الخاصة بإدارة الجداول، نكون مستعدين للانتقال إلى الوحدة الخامسة (قيود الجداول في MySQL) بدءاً بالدرس السادس عشر حول قيود القيم الإلزامية والافتراضية.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 Dropping Tables تفريغ الجداول
- تعلّم تفريغ الجداول وحذفها عبر TRUNCATE و DROP في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
- للمراجعة
- 02 Fast Reset With TRUNCATE TABLE التفريغ السريع عبر TRUNCATE TABLE
- المفهوم الهندسي الأساسي لقسم التفريغ السريع عبر TRUNCATE TABLE في قواعد بيانات MySQL 8 الحديثة.
- للمراجعة
- 03 How InnoDB Executes TRUNCATE آلية عمل TRUNCATE داخل InnoDB
- الصياغة القياسية وقواعد التنفيذ العملي لقسم آلية عمل TRUNCATE داخل InnoDB.
- للمراجعة
- 04 Permanent Removal With DROP الحذف النهائي عبر DROP TABLE
- آلية التخزين وأفضل ممارسات محرك InnoDB الخاصة بقسم الحذف النهائي عبر DROP TABLE.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات2
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 TRUNCATE TRUNCATE
- SQL DDL Fast Table Reset Operation
- أمر هيكلي فائق السرعة يفرّغ الجدول عبر هدم وإعادة إنشاء مساحة التخزين الفيزيائية مع الإبقاء على تعريف الأعمدة.
- للمراجعة
- 02 FS FS
- Operating System Filesystem Space Reclamation
- التحرير الفوري لكتل القرص الصلب وإعادتها لنظام التشغيل عند تفريغ أو حذف ملف .ibd المستقل في محرك InnoDB.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
افتح عميل MySQL 8 المحلي ونفّذ استعلام SQL المشروح في قسم التفريغ السريع عبر TRUNCATE TABLE للتحقق من النتائج.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم آلية عمل TRUNCATE داخل InnoDB وقارن مخرجات MySQL 8.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي4 أسئلة تنتظرك +
ما هو الفرق الهيكلي الأساسي بين أمر TRUNCATE TABLE وأمر DROP TABLE في MySQL 8؟
قارن مصير هيكل الجدول وتعريفات الأعمدة في كلا الأمرين.
كيف ينفّذ محرك التخزين InnoDB أمر TRUNCATE TABLE داخلياً؟
تذكّر سبب السرعة الفائقة لأمر TRUNCATE وتحريره الفوري لمساحة القرص.
أي عبارة تمنع أمر DROP TABLE من التوقف بالخطأ 1051 عندما يكون الجدول المستهدف غير موجود؟
اختر شرط الأمان القياسي عند حذف الجداول.
لماذا يُوصى دائماً بإضافة الكلمة المفتاحية TEMPORARY عند حذف جدول مؤقت (DROP TEMPORARY TABLE IF EXISTS)؟
تذكّر كيف تحمي كلمة TEMPORARY الجداول الدائمة من الحذف بالخطأ.