العروض المادية واستراتيجيات REFRESH
احتفظ بنتيجة استعلام مكلف باستخدام MATERIALIZED VIEW، وحدّثها وفق جدول زمني أو عند الطلب
العروض المادية واستراتيجيات REFRESH درس مجاني في SQL Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في SQL Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة SQL Academy 4 دروس في المجموع.
العرض المادي = النتيجة المحفوظة
على خلاف العرض العادي، يخزّن العرض المادي نتيجة استعلام SELECT على القرص. وتصل الاستعلامات إلى البيانات المخزّنة، لذا تكون سريعة. ويُجرى تحديثها عند الطلب.
CREATE MATERIALIZED VIEW daily_revenue AS
SELECT date_trunc('day', created_at) AS day,
SUM(total) AS revenue
FROM orders
GROUP BY 1;الاستعلام
الاستعلامات هي مجرد عمليات SELECT على البيانات المادية:
SELECT * FROM daily_revenue WHERE day >= NOW() - INTERVAL '30 days';REFRESH MATERIALIZED VIEW
أعيدوا حساب النتيجة. يؤدي ذلك إلى قفل العرض قفلًا حصريًا:
REFRESH MATERIALIZED VIEW daily_revenue;
-- Selects on the view block during refresh.REFRESH MATERIALIZED VIEW CONCURRENTLY
تحديث غير حاجب — يظل القرّاء يحصلون على البيانات القديمة إلى أن تصبح البيانات الجديدة جاهزة. ويتطلب ذلك فهرسًا فريدًا على العرض:
CREATE UNIQUE INDEX ON daily_revenue (day);
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;الفهارس على العروض المادية
يمكنكم إنشاء فهرس على عرض مادي كما تفعلون مع أي جدول — مما يسرّع الاستعلامات:
CREATE INDEX daily_revenue_day_idx ON daily_revenue (day DESC);متى نستخدم التجسيد المادي
استخدموا العروض المادية عندما:
- يكون الاستعلام الأساسي مكلفًا
- تتحمل النتيجة قدرًا بسيطًا من التقادم
- يُشغّل الاستعلام مرات كثيرة بين التحديثات
التحديث المجدول
لا يوجد مجدول مضمّن. استخدموا pg_cron أو مهمة cron في نظام التشغيل أو مجدول التطبيق:
-- Via pg_cron extension:
SELECT cron.schedule('refresh_daily', '0 1 * * *', 'REFRESH MATERIALIZED VIEW CONCURRENTLY daily_revenue;');التحديث التزايدي
لا يوفّر PostgreSQL تحديثًا تزايديًا أصليًا — إذ يعيد كل REFRESH الحساب من البداية. وللتجميع التزايدي، انظروا في الخيارات التالية:
- «جداول ملخّص» مخصّصة تعتمد على المشغلات
- التجميعات المستمرة في TimescaleDB
- امتداد pg_ivm، أي العروض المادية التزايدية
قراءة الجداول الأساسية دون التأثير في القراءات
يقرأ التحديث المتزامن CONCURRENT الجداول الأساسية ضمن لقطة معاملة — ولا يحجبها. لكن التحديث نفسه قد يكون بطيئًا عند التعامل مع بيانات ضخمة.
استخدام القرص
يضاعف العرض المادي مساحة تخزين بياناته. خططوا لمساحة القرص وفقًا لذلك.
الدمج مع التقسيم
بالنسبة إلى السلاسل الزمنية الضخمة، قسّموا العرض المادي إلى أقسام، أو استخدموا TimescaleDB:
CREATE MATERIALIZED VIEW orders_summary AS ... ;
CREATE INDEX ON orders_summary (day);
-- For very large views, consider regular table + manual upsert pattern.متى لا نستخدمه
إذا كانت قراءاتكم تتحمل استعلامات SQL ببيانات حديثة وكان الاستعلام الأساسي سريعًا أصلًا، فوفّروا على أنفسكم صيانة التحديث. العروض المادية مقايضة بين التقادم والسرعة.
مراجعة
تخزّن العروض المادية نتائج الاستعلامات مؤقتًا.
- مخزّنة على القرص، ومفهرسة، وسريعة
- تُحدَّث يدويًا أو وفق جدول زمني
- يتطلب CONCURRENTLY فهرس UNIQUE
- مناسبة للتجميعات المكلفة التي يُقبل فيها قدر بسيط من التقادم
تحقق سريع
ما الذي يتطلبه REFRESH MATERIALIZED VIEW CONCURRENTLY ولا يتطلبه REFRESH الأساسي؟
الأسئلة الشائعة
هل درس «العروض المادية واستراتيجيات REFRESH» مجاني؟
نعم — نص درس «العروض المادية واستراتيجيات REFRESH» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة SQL Academy، انتقل إلى CoddyKit PRO. تتضمن دورة SQL Academy 4 دروس في المجموع.
ماذا ستتعلم في «العروض المادية واستراتيجيات REFRESH»؟
احتفظ بنتيجة استعلام مكلف باستخدام MATERIALIZED VIEW، وحدّثها وفق جدول زمني أو عند الطلب تتمرن على SQL Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ SQL Academy؟
لا تُشترط خبرة سابقة. SQL Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «العروض المادية واستراتيجيات REFRESH»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس SQL Academy هذا؟
نعم. كل درس في SQL Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- العروض العادية: إعادة الاستخدام المنطقية
- العروض القابلة للتحديث ومشغلات INSTEAD OF
- العروض المادية واستراتيجيات REFRESH
- متى يجب التجميع المسبق