0Pricing
SQL Academy · درس

لماذا نستخدم التقسيم: التشذيب والصيانة

افهم فوائد التقسيم: تشذيب الاستعلامات، وVACUUM الأسرع، والأرشفة الأسهل

لماذا نستخدم التقسيم: التشذيب والصيانة درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.

ما التقسيم إلى أقسام؟

هو تقسيم جدول منطقي واحد إلى عدة جداول فعلية (أقسام)، يحتوي كل منها على مجموعة فرعية من الصفوف. ولا تستعلم الاستعلامات إلا عن الأقسام ذات الصلة.

لماذا نستخدمه؟

تسبب الجداول الكبيرة مشكلات:

  • تكبر الفهارس جدًا وتصبح عمليات البحث أبطأ
  • يستغرق VACUUM ساعات
  • تصبح النسخ الاحتياطية بطيئة
  • تفحص بعض الاستعلامات بيانات لا حاجة إلى فحصها

يعالج التقسيم المشكلات الأربع كلها.

استبعاد الأقسام

يمكن للمخطط تجاهل الأقسام التي لا يمكن أن تطابق عبارة WHERE:

EXPLAIN SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Only March partition scanned; older partitions skipped.
-- Plan rows: 1M, not 100B.

متى نستخدم التقسيم

استخدموا التقسيم عندما:

  • يكون حجم الجدول في نطاق 100GB أو أكثر
  • يتوفر مفتاح تقسيم طبيعي، مثل التاريخ أو المستأجر أو المنطقة
  • تُرشّح معظم الاستعلامات البيانات باستخدام ذلك المفتاح
  • يمكن أرشفة البيانات القديمة أو حذفها

متى لا نستخدم التقسيم

لا تقسّموا الجدول لمجرد أن الفكرة تبدو رائعة:

  • لا تستفيد الجداول التي يقل حجمها عن بضعة GB
  • إذا لم تُرشّح الاستعلامات البيانات باستخدام مفتاح التقسيم، فلن يحدث أي استبعاد للأقسام
  • يضيف ذلك تعقيدًا تشغيليًا، مثل إدارة الأقسام

استراتيجيات التقسيم

يدعم PostgreSQL ثلاث استراتيجيات:

  • Range — تغطي الأقسام نطاقات من القيم، مثل التواريخ والمعرّفات
  • List — تحتوي الأقسام على قيم محددة، مثل البلدان والمستأجرين
  • Hash — تستخدم التجزئة المعيارية لتحقيق توزيع متساوٍ

حذف منخفض التكلفة

يتم حذف القسم فورًا، دون حذف الصفوف واحدًا تلو الآخر:

DROP TABLE events_2023;
-- 100GB gone in milliseconds, no VACUUM aftermath.

صيانة أسهل

تعمل VACUUM وREINDEX وANALYZE على مستوى كل قسم. وتتناسب نوافذ الصيانة بين الأقسام بدلًا من الحاجة إلى دفعة واحدة ضخمة.

فهارس أصغر لكل قسم

يمتلك كل قسم فهارسه الخاصة. وتكون شجرة B-tree في قسم حجمه 1GB أقل مستويات من شجرة في قسم حجمه 1TB، ولذلك تكون عمليات البحث أسرع.

التقسيم أداة وليس حلًا سحريًا

لن تحصلوا على أداء مجاني؛ بل تحصلون على استبعاد للأقسام في الاستعلامات التي تُرشّح البيانات باستخدام مفتاح التقسيم، وعلى صيانة أسهل. وإذا لم ينطبق ذلك، فلن تضيفوا سوى التعقيد.

التقسيم الأصلي (التصريحي) في PostgreSQL

يتوفر منذ PG 10. وكل قسم عبارة عن جدول فعلي:

CREATE TABLE events (
  id BIGSERIAL,
  ts TIMESTAMPTZ NOT NULL,
  user_id BIGINT,
  data JSONB
) PARTITION BY RANGE (ts);

CREATE TABLE events_2024_01 PARTITION OF events
  FOR VALUES FROM ('2024-01-01') TO ('2024-02-01');

قبل PG10: التقسيم باستخدام الوراثة

تستخدم الأنظمة القديمة وراثة الجداول مع المشغلات. تجنبوا هذا الأسلوب في الكود الجديد، فالتقسيم التصريحي أبسط وأسرع.

مراجعة

يبرع التقسيم في الجداول الكبيرة المقسمة حسب فترات زمنية أو شرائح المستأجرين.

  • يتجاوز الاستبعاد الأقسام غير ذات الصلة
  • تكون الصيانة لكل قسم أسرع
  • يحل DROP TABLE محل DELETE لبيانات حجمها 100GB
  • ليس سحريًا، ولا يفيد إلا إذا تطابقت الاستعلامات مع مفتاح التقسيم

تحقق سريع

قسّمتم جدولًا حسب الشهر وشغّلتم SELECT * FROM events WHERE country = 'US' دون أي مرشح للتاريخ. هل يفيد التقسيم؟

الأسئلة الشائعة

هل درس «لماذا نستخدم التقسيم: التشذيب والصيانة» مجاني؟

نعم — نص درس «لماذا نستخدم التقسيم: التشذيب والصيانة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.

ماذا ستتعلم في «لماذا نستخدم التقسيم: التشذيب والصيانة»؟

افهم فوائد التقسيم: تشذيب الاستعلامات، وVACUUM الأسرع، والأرشفة الأسهل تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟

لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «لماذا نستخدم التقسيم: التشذيب والصيانة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟

نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. لماذا نستخدم التقسيم: التشذيب والصيانة
  2. التقسيم بالنطاق والقائمة والتجزئة
  3. فصل الأقسام وإرفاقها
  4. الاستعلام عبر الأقسام بكفاءة
← العودة إلى SQL Academy