لا تقم أبدا بتشغيل الاستعلامات بدون مهلة استراحة.
استعلام لوجه واحد أو زيادة في التحميل يمكن أن يؤدي إلى توقفات أو توقف التطبيقات بدونها. دعونا نفكر في السبب.
خذ في الاعتبار حالة يتم فيها إدخال استعلام طويل الأمد عن غير قصد إلى تطبيقنا. عادة ما تعالج قاعدة البيانات استعلامات قصيرة العمر (10 مللي ثانية أو أقل) وفجأة نحصل على استعلام جديد يستغرق 1000 مللي ثانية لكل تنفيذ.
لن يستهلك هذا الموارد فقط، بل سيزيد أيضا من عدد المعاملات المتزامنة. سنصل إما إلى حدود الاتصال، أو حدود الرسائل، أو نستخدم 100٪ من وحدة معالجة المركز/IOPS في قاعدة البيانات.
الآن فكر في نفس السيناريو، لكننا نضع مهلة زمنية بمقدار 250 مللي ثانية على كل معاملة (جانب قاعدة البيانات)، مع منطق إعادة محاولة تراجع أسي + تذبذب (جانب التطبيق). لقد قمنا الآن بتحديد نطاق الانفجار لأي استفسار واحد. الاستفسارات الطويلة ستقتل، ومنطق التراجع يقلل من خطر القطعان المدمرة.
من خلال مراقبة هذه المهلات، يمكننا تحديد الاستعلام الإشكالي بسرعة والتراجع عن التغيير.
سجل الكتابة المسبق (WAL) هو أيضا كيف تلتزم قواعد البيانات بسرعة وكيف تتعافى بأمان من الأعطال.
بعيدا عن B-trees، ربما يكون أهم هيكل في Postgres وMySQL.
(يسمى "سجل إعادة الصنع" في MySQL-land)