محتويات الدورة

PostgreSQL / المتوسط: التزامن وSQL القابلة للصيانة / الدرس 11

VACUUM وautovacuum وإحصاءات المحسن

اشرح تنظيف النسخ وصيانة الإحصاءات كعمل طبيعي، وشخص التأخير دون تعطيل الحماية أو اعتماد VACUUM FULL دورياً.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تمييز النسخ الميتة والمساحة القابلة لإعادة الاستخدام والمحررة للنظام.
  • فحص أدلة الصيانة وآثار المعاملات الطويلة.

ينشئ MVCC حاجة للتنظيف

تترك UPDATE وDELETE نسخاً قديمة قد تحتاجها اللقطات. حين تنتهي الحاجة تجعل vacuum مساحتها قابلة للاستخدام. لا تصغر VACUUM العادية كل الملفات إلى الحد الأدنى، فلا يثبت ثبات حجم الملف الفشل. تخدم خريطة الرؤية المسح بالفهرس ويحمي التجميد تفسير معرفات المعاملات؛ هذه دورة حياة طبيعية لا نسيان للحذف.

اقرأ العدادات كتقديرات مع أوقاتها

توفر pg_stat_user_tables عدادات وأوقات صيانة مفيدة. n_live_tup وn_dead_tup تقديران لا عد دقيق أو بايتات قابلة للتحرير. قد تصفر العدادات وللرؤية توقيت، فقارن عينات وسياقاً. قد يحتاج جدول بتنظيف حديث اهتماماً إذا سبق معدل الكتابة الصيانة. ابدأ بالدليل قبل اقتراح ضبط خاص.

sql SQL توضيحي؛ النتائج المتوقعة مستنتجة وليست قياسات.
SELECT schemaname, relname, n_live_tup, n_dead_tup,
 last_vacuum, last_autovacuum, last_analyze, last_autoanalyze
FROM pg_stat_user_tables
WHERE schemaname = 'quay_lab' ORDER BY relname;

تعتمد العدادات على البيئة ولا تثبت أوقات NULL وحدها تعطيل الصيانة.

autovacuum صيانة للحمل

تنفذ autovacuum التنظيف والتحليل مع التغيير وفق حدود وعوامل تفحص في الإصدار الفعلي. قد تبرر معدلات مختلفة إعدادات خاصة مراجعة؛ نسخ عامل واحد ليس خطة سعة. قد تبدأ PostgreSQL حماية الالتفاف حتى مع تعطيل العمل المعتاد. لا تعطلها لإخفاء البطء دون بديل، وراقب عمر التجميد والمساحة قبل حادث التوافر.

حدد الجلسات المحتفظة بالتاريخ القديم

قد تحتفظ المعاملات الطويلة والخاملة بتاريخ يمنع التنظيف الفعال. وقد تحتفظ فتحات المزامنة وردود النسخ بالتاريخ أو WAL بقواعد مختلفة. يسرد الاستعلام أعمار المعاملات دون إنهائها. تعتمد التفاصيل على صلاحيات المراقبة. افحص التطبيق وهدف المعاملة قبل قرار إلغاء مصرح؛ قد يعكس قتل جلسة عملاً مهماً دون علاج السبب.

sql SQL توضيحي؛ النتائج المتوقعة مستنتجة وليست قياسات.
SELECT pid, usename, state, xact_start, backend_xmin,
 clock_timestamp() - xact_start AS transaction_age
FROM pg_stat_activity
WHERE datname = current_database() AND xact_start IS NOT NULL
ORDER BY xact_start;

هذا رصد فقط؛ أقدم معاملة دليل للتحقيق لا إذن لإنهائها.

ميز ANALYZE عن إعادة الكتابة

تأخذ ANALYZE عينات للإحصاءات ولا تؤدي مهمة VACUUM نفسها وإن جمع الأمران. تعيد VACUUM FULL كتابة الجدول وتحتاج مساحة وقفل ACCESS EXCLUSIVE وليست autovacuum العادية. للآباء المقسمين والجداول المؤقتة اعتبارات خاصة، فلا تفترض تغطية آلية متطابقة. خطط الصيانة اليدوية من الدليل وميزانية القفل والتعافي لا طقس إعادة كتابة يومي.

الأخطاء الشائعة وإصلاحها

لا تصغر الملفات بعد VACUUM العادية

لماذا يحدث؟
اختلطت المساحة الداخلية القابلة للاستخدام بمساحة النظام.
كيف تصلحه؟
افحص الاستخدام والنمو قبل إعادة كتابة معطلة.
كيف تتجنب تكراره؟
افصل أهداف التنظيف وضبط التضخم والتصغير الفيزيائي.

تستمر تقديرات النسخ الميتة بالزيادة

لماذا يحدث؟
قد يسبق التحديث أو التاريخ المحتفظ أو نقص السعة التنظيف.
كيف تصلحه؟
اربط عمر المعاملة وتقدم التنظيف ومعدل الكتابة.
كيف تتجنب تكراره؟
راقب الاتجاهات وقيم سياسة الجدول من الأدلة.

VACUUM cannot run inside a transaction block (25001)

لماذا يحدث؟
وُضعت الصيانة داخل معاملة تجارية.
كيف تصلحه؟
افصل الصيانة المراجعة عن تغيير البيانات المعاملاتي.
كيف تتجنب تكراره؟
افحص قيود المعاملة لكل أمر إداري.

اختبر فهمك

1. يبقى الملف 2 GB بعد حذف كثير وتنظيف عادي. هل يثبت ظهور الصفوف المحذوفة؟

اعرض الحل المشروح

لا؛ الرؤية المنطقية والحجم الفيزيائي مختلفان. قد تعاد المساحة داخل الجدول مع بقاء الملف. افحص الصفوف والصيانة وقدرة الكتابة على الاستخدام. قد تفرض إعادة كتابة للتصغير وحده أقفالاً وضغطاً بلا حاجة.

2. يترك تطبيق معاملة خاملة ساعات بعد SELECT. لماذا تفحصها الصيانة؟

اعرض الحل المشروح

قد يحتفظ أفق رؤيتها بنسخ ما زالت لازمة نظرياً. حدد مسار التطبيق واقصر المعاملة بإصلاح مراجع. أثبت الاحتفاظ أو الحجب؛ العمر وحده لا يفسر كل مشكلة، والإلغاء قرار تشغيلي.

أهم ما تعلمته

  • تخدم vacuum إعادة الاستخدام والرؤية وسلامة المعاملات الطويلة.
  • قس التغيير والاحتفاظ قبل الضبط أو إعادة الكتابة.

المراجع الرسمية