لذا، إليكم بعض الأمور البسيطة التي تعلمتها حول تشغيل SQLite. هذا هو الموقع الرابع الذي أستخدم فيه SQLite، وأعتقد أن هذا الموقع أصعب لأنني، بفضل قوة Django ORM، أحمّل قاعدة البيانات مهاماً أكثر مما كنتُ أقوم به سابقاً بدون Django.
بدأتُ بتفعيل وضع WAL كما هو مذكور في جميع المقالات، متمنياً أن تسير الأمور على ما يُرام.
يبدو أن أمر ANALYZE مهم. اليوم، كنتُ أُجري استعلامًا (باستخدام FTS5 من SQLite للبحث النصي الكامل) على جدول يحتوي على 4000 صف، واستغرق 5 ثوانٍ. بدا لي هذا غير منطقي: فالحواسيب سريعة!
اتضح أن ما كان عليّ فعله هو تشغيل أمر ANALYZE! فورًا، انخفض وقت تنفيذ الاستعلام من 5 ثوانٍ إلى حوالي 0.05 ثانية (أو رقم صغير جدًا لدرجة أنني لم أُعر الأمر اهتمامًا). ما زلتُ لا أعرف بالضبط ما الخطأ الذي حدث في خطة الاستعلام، لكنني أرجّح أنه كان خطأً تربيعيًا غير مقصود.
يُنشئ أمر ANALYZE "إحصائيات" (أظن أنها تتعلق بعدد الصفوف في كل جدول؟ وربما أشياء أخرى؟) حتى يتمكن مُخطط الاستعلام من اتخاذ خيارات أفضل.
ربما أتعلم يومًا ما قراءة خطة الاستعلام.
ليست هناك تعليقات:
إرسال تعليق