Advanced PostgreSQL: Indexing, Partitioning, Replication · درس

تشخيص التضخم واستراتيجية Vacuum

افهم كيف ينشئ MVCC تضخمًا في الجداول والفهارس، وكيف تقيسه، وكيف تضبط autovacuum للحفاظ على أداء عالٍ.

الدرس 4 من 413 خطوة

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

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

MVCC and Dead Tuples

PostgreSQL uses MVCC: updates and deletes leave behind old row versions called dead tuples. Until they are cleaned up, they occupy space and slow scans. This wasted space is bloat.

What VACUUM Does

VACUUM reclaims dead tuples for reuse and updates visibility information. It usually does not return space to the OS; VACUUM FULL does but rewrites the whole table and takes a strong lock.

Measuring Bloat

Inspect dead tuple counts per table from the statistics view.

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

Autovacuum Basics

Autovacuum runs in the background, triggering when dead tuples exceed a threshold based on table size and the scale factor setting.

-- trigger ~ threshold + scale_factor * n_live_tup
autovacuum_vacuum_scale_factor = 0.2

Tuning Hot Tables

For large, frequently updated tables, the default 20% scale factor is too lazy. Lower it per table so vacuum runs more often on less garbage.

ALTER TABLE orders SET (
  autovacuum_vacuum_scale_factor = 0.02);

Vacuum Throttling

Autovacuum throttles itself with cost limits to avoid I/O storms. On modern hardware you can raise autovacuum_vacuum_cost_limit so vacuum finishes faster.

autovacuum_vacuum_cost_limit = 2000

Transaction ID Wraparound

VACUUM also prevents transaction ID wraparound, a catastrophic condition. Aggressive anti-wraparound vacuums are non-negotiable and cannot be skipped.

SELECT datname, age(datfrozenxid)
FROM pg_database ORDER BY 2 DESC;

Index Bloat

Indexes bloat too. REINDEX CONCURRENTLY rebuilds an index without blocking writes, restoring its compactness.

REINDEX INDEX CONCURRENTLY orders_pkey;

HOT Updates

Heap-Only Tuple updates avoid index churn when no indexed column changes. Leaving some free space via a lower fillfactor helps HOT updates and reduces bloat.

ALTER TABLE orders SET (fillfactor = 90);

VACUUM vs ANALYZE

VACUUM reclaims space; ANALYZE refreshes the planner statistics. Autovacuum does both, but after big bulk loads run ANALYZE manually for fresh plans.

ANALYZE orders;

A Monitoring Habit

Alert on rising n_dead_tup, growing table size with stable row counts, and high age(datfrozenxid). These early signals let you tune before queries slow down.

Quick Check

A large, hot table keeps growing despite stable row counts. What is the likely cause and fix?

Recap

You learned to diagnose bloat from MVCC dead tuples, measure it with pg_stat_user_tables, tune autovacuum per table, guard against ID wraparound, and use REINDEX CONCURRENTLY and fillfactor to keep performance high.

البدء مجانًا

تعلم Advanced PostgreSQL: Indexing, Partitioning, Replication مع معلم ذكاء اصطناعي — مجانًا

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

الدورات
11
الدروس
44

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

هل درس «تشخيص التضخم واستراتيجية Vacuum» مجاني؟

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

ماذا ستتعلم في «تشخيص التضخم واستراتيجية Vacuum»؟

افهم كيف ينشئ MVCC تضخمًا في الجداول والفهارس، وكيف تقيسه، وكيف تضبط autovacuum للحفاظ على أداء عالٍ. تتمرن على Advanced PostgreSQL: Indexing, Partitioning, Replication مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Advanced PostgreSQL: Indexing, Partitioning, Replication؟

لا تُشترط خبرة سابقة. Advanced PostgreSQL: Indexing, Partitioning, Replication على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تشخيص التضخم واستراتيجية Vacuum»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Advanced PostgreSQL: Indexing, Partitioning, Replication هذا؟

نعم. كل درس في Advanced PostgreSQL: Indexing, Partitioning, Replication يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

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

  1. الضبط الشامل للأداء
  2. المراقبة المتقدمة والتنبيهات
  3. الاتجاهات المستقبلية في PostgreSQL
  4. تشخيص التضخم واستراتيجية Vacuum
← العودة إلى Advanced PostgreSQL: Indexing, Partitioning, Replication