0Pricing
SQL Academy · درس

الاستعلام عبر الأقسام بكفاءة

اكتب استعلامات تستفيد من تشذيب الأقسام، وتحقق من التشذيب باستخدام EXPLAIN

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

التصفية باستخدام مفتاح التقسيم

لا يعمل التقليم إلا عندما يتضمن شرط WHERE مفتاح التقسيم:

-- Prunes (uses date partitioning):
SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';

-- No pruning — scans all partitions:
SELECT * FROM events WHERE user_id = 42;

التقليم المركب

يمكن للمخطط إجراء التقليم باستخدام عدة مفاتيح في الجداول المقسمة متعددة المستويات:

SELECT * FROM events
WHERE ts >= '2024-03-01' AND ts < '2024-04-01'
  AND user_id = 42;
-- Prunes by date AND by hash partition.

يُظهر EXPLAIN عملية التقليم

تحقق من الخطة للتأكد من تنفيذ التقليم:

EXPLAIN SELECT * FROM events WHERE ts >= '2024-03-01' AND ts < '2024-04-01';
-- Append
--   -> Seq Scan on events_2024_q1
-- Only Q1 partition shown; others pruned.

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

يستخدم PG الحديث تقليم الأقسام السريع افتراضيًا. أما «استبعاد القيود» الأقدم فكان أبطأ؛ فتأكد من أن enable_partition_pruning = on.

التقليم وقت التنفيذ

حتى مع الاستعلامات ذات المعلمات (PREPARE)، يستطيع PG إجراء التقليم وقت التنفيذ:

PREPARE p(timestamptz, timestamptz) AS
SELECT * FROM events WHERE ts >= $1 AND ts < $2;

EXECUTE p('2024-03-01', '2024-04-01');
-- Pruning happens at execute, not at parse.

الفهارس عبر الأقسام

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

التجميع عبر الأقسام

يستفيد GROUP BY على مفتاح التقسيم أكثر من غيره. أما GROUP BY على الأعمدة الأخرى فيفحص كل الأقسام.

التنفيذ المتوازي لكل قسم

يمكن لـ PostgreSQL تنفيذ عمليات الفحص عبر الأقسام بالتوازي (PG 11+):

SET max_parallel_workers_per_gather = 4;
EXPLAIN SELECT COUNT(*) FROM events;
-- Parallel Append over partitions.

الضم عبر الجداول المقسمة

إذا اشترك كلا الجدولين المقسمين في مفتاح التقسيم، يكون «الضم على مستوى الأقسام» أسرع، إذ يُضم كل قسم على حدة:

SET enable_partitionwise_join = on;
-- Now PG can join events to event_metrics partition-by-partition.

تجنب الأخطاء الشائعة

  • لا تطبق دوال على مفتاح التقسيم في WHERE، لأن ذلك يعطل التقليم
  • لا تنسَ تضمين مفتاح التقسيم في استعلاماتك
  • لا تقسّم الجدول إلى آلاف الأقسام الصغيرة، لأن تكلفة التخطيط ستصبح العامل المسيطر

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

استهدف عشرات الأقسام أو بضع مئات منها، لا الآلاف. لكل قسم تكلفة إضافية أثناء التخطيط. وللاحتياجات شديدة الدقة، استخدم التقسيم الفرعي.

الصيانة لكل قسم

تُنفذ VACUUM وANALYZE وREINDEX لكل قسم، ويمكن تنفيذها بالتوازي. وتزداد الفائدة كلما زاد عدد الأقسام، ضمن حدود معقولة.

مراجعة

يكافئ التقسيم الاستعلامات التي تصفي باستخدام مفتاح التقسيم.

  • استخدام WHERE على مفتاح التقسيم ← التقليم
  • التأكد باستخدام EXPLAIN
  • تمكين الضم على مستوى الأقسام للضمود المتوافقة
  • عدم الإفراط في التقسيم

تحقق سريع

لديك events مقسم حسب الشهر باستخدام ts. أي استعلام يستفيد من تقليم الأقسام؟

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

هل درس «الاستعلام عبر الأقسام بكفاءة» مجاني؟

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

ماذا ستتعلم في «الاستعلام عبر الأقسام بكفاءة»؟

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

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

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

كم من الوقت يستغرق درس «الاستعلام عبر الأقسام بكفاءة»؟

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

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

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

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

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