وضع WAL في SQLite: التوازن بين المتانة والأداء
يُستخدم وضع WAL (سجل الكتابة المسبقة) في SQLite غالبًا لتحقيق إنتاجية كتابة أعلى، لكنه يُحارب متانة البيانات مقارنةً بوضع السجل الافتراضي. تتحكم خاصية pragma `synchronous` في عدد مرات استدعاء fsync، والقيمة الافتراضية هي NORMAL. في الوضع NORMAL، يتم مزامنة ملفات WAL قبل كل نقطة تفتيش، وملف قاعدة البيانات بعدها، لكن معظم المعاملات تفتقر إلى عمليات المزامنة. بالنسبة للتطبيقات التي لا تعتبر فيها المتانة أمرًا بالغ الأهمية، يكون الوضع NORMAL كافيًا. لتحقيق متانة مضمونة في حالة انقطاع التيار الكهربائي، فإن `synchronous=FULL` يضيف مزامنة ملف WAL بعد كل عملية تأكيد معاملة، مما يزيد من المتانة على حساب سرعة الكتابة. هذا التفسير، الذي جاء نتيجةً لمخاوف بشأن احتمال تضحية SurrealDB بالمتانة من أجل أداء الاختبارات المعيارية، يُوضح نهج SQLite.