0Pricing
SQL Academy · درس

VACUUM وautovacuum وvacuum_cost_delay

اضبط عتبات autovacuum وvacuum_cost_delay وVACUUM المتوازي للجداول الكبيرة

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

أوضاع VACUUM الثلاثة

  • VACUUM (كسول) — يستعيد الصفوف الميتة، ويحدّث خريطة المساحة الحرة، ولا يفرض قفلاً حصرياً
  • VACUUM FULL — يعيد كتابة الجدول؛ يفرض قفلاً حصرياً؛ ويعيد مساحة القرص إلى نظام التشغيل
  • VACUUM ANALYZE — ينفّذ vacuum ويحدّث إحصاءات المخطط في عملية واحدة

تشغيل VACUUM يدوياً

قد يكون ذلك مفيداً أحياناً حتى مع تفعيل autovacuum:

VACUUM (VERBOSE) orders;
VACUUM (VERBOSE, ANALYZE) orders;
VACUUM (PARALLEL 4) orders;       -- parallel index cleanup (PG 13+)

عملية Autovacuum

ينشئ مشغّل يعمل في الخلفية عمالاً ينفّذون vacuum على الجداول التي تتجاوز الحدود المحددة. وبشكل افتراضي، يتولى عدد قليل من العمال إدارة العنقود.

الضبط لكل جدول

تستفيد الجداول كثيرة التحديث من autovacuum المكثف:

ALTER TABLE busy_table SET (
  autovacuum_vacuum_scale_factor = 0.05,    -- 5% dead vs default 20%
  autovacuum_vacuum_threshold    = 1000,
  autovacuum_analyze_scale_factor = 0.05
);

vacuum_cost_delay

يحدّ من عمليات الإدخال والإخراج التي ينفّذها VACUUM حتى لا تؤثر سلباً في الاستعلامات الأمامية. القيمة الافتراضية في PG 12 والإصدارات الأحدث هي 2ms — وهي مناسبة عادةً. وبالنسبة إلى أقراص SSD، يمكنك خفضها:

autovacuum_vacuum_cost_delay = 2ms
-- Lower delay = faster vacuum, more I/O usage.
-- Set per-table for hot tables that need faster cleanup.

VACUUM المتوازي

يستخدم VACUUM المعالجة المتوازية لتنظيف الفهارس منذ PG 13:

VACUUM (PARALLEL 4) big_table;
-- Each index cleaned by a parallel worker (up to max_parallel_maintenance_workers).

VACUUM FULL: متى ولماذا

يعيد كتابة الجدول من الصفر — ويعيد المساحة إلى نظام التشغيل. يفرض ACCESS EXCLUSIVE. استخدمه كحل أخير فقط، أو استخدم pg_repack بدلاً منه.

VACUUM FULL orders;
-- Locks orders; rewrites; on huge tables this is hours of downtime.

pg_repack: بديل عبر الإنترنت

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

pg_repack -d mydb -t orders
-- Builds a shadow table, sync, swaps in.

مراقبة Autovacuum

اعرض أوقات آخر vacuum وanalyze وأعداد الصفوف الميتة:

SELECT relname,
       n_live_tup, n_dead_tup,
       last_autovacuum, last_autoanalyze
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC;

عندما يتأخر Autovacuum

الأعراض:

  • يزداد التضخم
  • تكون قيمة n_dead_tup مرتفعة في pg_stat_user_tables
  • تتدهور خطط الاستعلامات

الإصلاحات: زد قيمة autovacuum_max_workers، وخفّض عامل القياس لكل جدول، وأصلح المعاملات الطويلة التي تمنع vacuum.

تسجيل Vacuum

لأغراض الضبط، سجّل عمليات vacuum البطيئة:

log_autovacuum_min_duration = '500ms'
-- Logs every autovacuum action that took longer than 500ms.

FREEZE

ينفّذ VACUUM أحياناً عملية "تجميد" للصفوف القديمة لمنع التفاف xid. ويحافظ autovacuum المكثف على انخفاض أعمار التجميد ويمنع أحداث التفاف xid الطارئة.

مراجعة

يُعد Autovacuum ضرورياً؛ اضبطه وفقاً لحِمل العمل.

  • إعدادات autovacuum لكل جدول من أجل الجداول كثيرة التحديث
  • VACUUM FULL حل أخير — فضّل pg_repack
  • راقب n_dead_tup وlast_autovacuum
  • أصلح المعاملات الطويلة التي تمنع التنظيف

تحقق سريع

ما الطريقة الأكثر أماناً لاستعادة مساحة القرص من جدول إنتاج كثير التحديث دون فرض قفل يحجب العمليات لفترة طويلة؟

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

هل درس «VACUUM وautovacuum وvacuum_cost_delay» مجاني؟

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

ماذا ستتعلم في «VACUUM وautovacuum وvacuum_cost_delay»؟

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

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

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

كم من الوقت يستغرق درس «VACUUM وautovacuum وvacuum_cost_delay»؟

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

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

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

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

  1. MVCC وأسباب التضخم
  2. VACUUM وautovacuum وvacuum_cost_delay
  3. ANALYZE وpg_statistic
  4. الفحص باستخدام الفهرس فقط وخريطة الرؤية
← العودة إلى SQL Academy