فصل الأقسام وإرفاقها
استخدم ATTACH PARTITION وDETACH PARTITION لإدخال الأقسام وإخراجها دون حجب عمليات القراءة
فصل الأقسام وإرفاقها درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
لماذا الفصل؟
يمكنك إخراج قسم قديم من الجدول المباشر من دون حذف البيانات. ومن الاستخدامات الشائعة لذلك:
- أرشفته في قاعدة بيانات منفصلة
- نقله إلى مساحة تخزين أقل تكلفة
- اتباع نمط النسخ الاحتياطي ثم الحذف
DETACH PARTITION
يزيل القسم من الجدول الأب مع الاحتفاظ بالبيانات:
ALTER TABLE events DETACH PARTITION events_2022;
-- events_2022 is now a standalone table.
-- Queries on events no longer see those rows.DETACH CONCURRENTLY (PG 14+)
يتجنب قفل ACCESS EXCLUSIVE:
ALTER TABLE events DETACH PARTITION events_2022 CONCURRENTLY;
-- Two-step: detach pending, then finalize. App writes continue.أرشفة الأقسام المفصولة
بعد الفصل:
-- Backup with pg_dump:
pg_dump --table=events_2022 mydb > events_2022.sql
-- Move to a cold-storage Postgres or S3:
psql cold_db < events_2022.sql
-- Then drop from primary:
DROP TABLE events_2022;ATTACH PARTITION
يضيف جدولًا موجودًا بوصفه قسمًا جديدًا:
CREATE TABLE events_2025 (LIKE events INCLUDING ALL);
-- Load data with COPY or INSERT ... SELECT
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');التحقق أثناء ATTACH
يفحص ATTACH القسم الجديد للتأكد من أن كل صف يطابق حدود FOR VALUES. تجنب الفحص بإنشاء قيد CHECK مطابق قبل تنفيذ attach:
ALTER TABLE events_2025
ADD CONSTRAINT events_2025_ts_check
CHECK (ts >= '2025-01-01' AND ts < '2026-01-01');
ALTER TABLE events ATTACH PARTITION events_2025
FOR VALUES FROM ('2025-01-01') TO ('2026-01-01');
-- No scan needed; PG trusts the CHECK.النوافذ الزمنية المتحركة
حرّك النافذة إلى الأمام أسبوعيًا أو شهريًا: أنشئ القسم التالي مسبقًا، ثم احذف الأقدم:
BEGIN;
CREATE TABLE events_2024_q4 PARTITION OF events FOR VALUES FROM ('2024-10-01') TO ('2025-01-01');
DROP TABLE events_2023_q4;
COMMIT;التبديل بين مستويات التخزين
افصل قسمًا، ثم نفّذ ALTER TABLE … SET TABLESPACE لنقله إلى مساحة تخزين أبطأ، وبعد ذلك أعد إرفاقه:
ALTER TABLE events DETACH PARTITION events_2022;
ALTER TABLE events_2022 SET TABLESPACE archive_disk;
ALTER TABLE events ATTACH PARTITION events_2022 FOR VALUES FROM ('2022-01-01') TO ('2023-01-01');الفهارس على الأقسام المرفقة
لكي يُرفق القسم، يجب أن تتطابق فهارسه مع فهارس الجدول الأب. ويمكن لـ PG إنشاء الفهارس المفقودة تلقائيًا أثناء ATTACH في PG 14+.
التبديل الذري للأقسام
غلّف DETACH وATTACH داخل معاملة لتبديل محتويات القسمين ذريًا. وهذا نمط شائع لبناء القسم الجديد دون اتصال ثم استبداله:
BEGIN;
ALTER TABLE events DETACH PARTITION events_2024_q1;
ALTER TABLE events ATTACH PARTITION events_2024_q1_new
FOR VALUES FROM ...;
COMMIT;الأداء
إن DETACH وATTACH عمليتا كتالوج، وتكونان فوريتين عند إعداد القيود مسبقًا. وتُعد حيلة قيد CHECK ضرورية عند العمل على نطاق واسع.
مراجعة
يمثل الفصل والإرفاق السلاح السري للتقسيم من أجل الصيانة أثناء التشغيل.
- استخدم DETACH PARTITION CONCURRENTLY لإزالة الأقسام أثناء التشغيل
- يؤدي قيد CHECK المُعد مسبقًا إلى تجاوز فحص التحقق
- التبديل والأرشفة ونقل البيانات بين مستويات التخزين
- تنفيذ ذري باستخدام BEGIN/COMMIT
تحقق سريع
كيف تتجنب فحص الجدول بالكامل عند تشغيل ATTACH PARTITION؟
الأسئلة الشائعة
هل درس «فصل الأقسام وإرفاقها» مجاني؟
نعم — نص درس «فصل الأقسام وإرفاقها» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «فصل الأقسام وإرفاقها»؟
استخدم ATTACH PARTITION وDETACH PARTITION لإدخال الأقسام وإخراجها دون حجب عمليات القراءة تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «فصل الأقسام وإرفاقها»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- لماذا نستخدم التقسيم: التشذيب والصيانة
- التقسيم بالنطاق والقائمة والتجزئة
- فصل الأقسام وإرفاقها
- الاستعلام عبر الأقسام بكفاءة