كيفية منع تسجيل الدخول المسبق على جدول واحد فقط في PostgreSQL؟

StackOverflow https://stackoverflow.com/questions/38090

  •  09-06-2019
  •  | 
  •  

سؤال

أنا أفكر في تسجيل الشحن كتابة السجلات المسبقة (WAL) في PostgreSQL لإنشاء قاعدة بيانات جاهزة للاستخدام.ومع ذلك، لدي جدول واحد في قاعدة البيانات يتلقى قدرًا كبيرًا من عمليات الإدراج/الحذف كل يوم، ولكني لا أهتم بحماية البيانات الموجودة فيه.لتقليل كمية WALs المنتجة كنت أتساءل، هل هناك طريقة لمنع تسجيل أي نشاط على جدول واحد في WALs؟

هل كانت مفيدة؟

المحلول

لسوء الحظ، لا أعتقد أن هناك.يعمل تسجيل WAL على مستوى الصفحة، وهو أقل بكثير من مستوى الجدول ولا يعرف حتى الصفحة التي تحتوي على البيانات من أي جدول.في الواقع، ملفات WAL لا تعرف حتى الصفحات التي تنتمي إليها قاعدة البيانات.

قد تفكر في نقل جدول النشاط العالي الخاص بك إلى نسخة مختلفة تمامًا من PostgreSQL.يبدو هذا جذريًا، لكن لا يمكنني التفكير في طريقة أخرى غير مدروسة لتجنب ظهور هذا النشاط في ملفات WAL الخاصة بك.

نصائح أخرى

مررت عبر هذا السؤال القديم، والذي لديه الآن إجابة أفضل.قدم Postgres 9.1 "الجداول غير المسجلة"، وهي الجداول التي لا تسجل تغييرات DML الخاصة بها إلى WAL.راجع المستندات لمزيد من المعلومات، ولكن على الأقل يوجد الآن حل لهذه المشكلة.

يرى في انتظار 9.1 - الجداول غير المسجلة بواسطة ديبيسز، و 9.1 المستندات.

لتقديم خيار واحد لسؤالي الخاص.هناك جداول درجة الحرارة - "يتم إسقاط الجداول المؤقتة تلقائيًا في نهاية الجلسة، أو بشكل اختياري في نهاية المعاملة الحالية (انظر ON COMMIT أدناه)" - والتي أعتقد أنها لا تنشئ WALs.ومع ذلك، قد لا يكون هذا مثاليًا حيث يجب أن يكون إنشاء الجدول وتصميمه موجودًا في الكود.

سأفكر com.memcached لحالات الاستخدام مثل هذا.يمكنك حتى توزيع الحمل على مجموعة من الآلات الرخيصة أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top