يتباطأ بحث Immich مع النمو عندما تتجاوز الفهارس الأكبر ومجموعات العمل سعة التخزين المؤقت أو إمكانات التصفية أو سلوك التخزين الفعّال، وليس لمجرد وجود الصور.
تؤدي زيادة حجم المكتبة إلى رفع عدة كميات في الوقت نفسه: الصفوف، والتضمينات، والبيانات الوصفية، والصور المصغرة، وتركيبات التصفية المحتملة. شخّص المرحلة التي تتباطأ، لأن تخزين الملفات الأسرع لا يمكنه إصلاح مسار استعلام سيئ، كما أن ضبط قاعدة البيانات لا يمكنه تسريع نقطة تحميل بعيدة للصور المصغرة.
النمو يوسّع ما هو أكثر من المكتبة الأصلية
يمكن أن يضيف كل أصل جديد صفوفًا في قاعدة البيانات، وبيانات وصفية مستخرجة، وتمثيلات قابلة للبحث، ووجوهًا، وصورًا مصغرة، ووسائط مشفّرة. تنمو هذه البُنى بمعدلات مختلفة ويجري الوصول إليها بطرق مختلفة. لذلك لا يمكن لتيرابايتات المكتبة الأصلية التنبؤ بزمن استجابة البحث من دون معرفة عدد الكيانات القابلة للبحث والكائنات المشتقة التي يعبرها الطلب.
يفصل تحليل مسار بيانات Immich من ZimaSpace بين المعالجة في الخلفية، والتمثيلات القابلة للبحث، واختيار قاعدة البيانات، والوسائط المقدَّمة. وتتمثل خلاصته العملية لتشخيص الاستعلامات في أن نمو المكتبة يغيّر كلًا من الفهرس القابل للبحث والملفات المقدَّمة بعد ظهور النتيجة، ما يخلق أكثر من مصدر محتمل للتأخير.
سجّل عدد الأصول، وحجم قاعدة البيانات، وحجم الفهرس المتجهي، وحجم الصور المصغرة، وعدد القيم المختلفة لمرشحات التصفية المستخدمة بكثرة عند كل مرحلة. تكشف السلسلة الزمنية البنية التي تنمو بالتزامن مع زمن الاستجابة، وتمنع إلقاء اللوم على زيادة غير ذات صلة في بايتات الفيديو الأصلي بسبب زمن اختيار قاعدة البيانات.
تصبح الفهارس المتجهية حساسة لملاءمة الذاكرة
ينفّذ البحث الدلالي اجتيازًا لفهرس التمثيلات بدلًا من قراءة كل صورة أصلية. ومع نمو هذا الفهرس، قد لا تعود خريطته النشطة أو صفحاته مقيمة في الذاكرة. وتحول حالات فقدان التخزين المؤقت العشوائية العمل الذي كان بسرعة الذاكرة إلى قراءات من التخزين، ما يجعل زمن الاستجابة في الحالات الطرفية يرتفع بحدة أكبر مما يوحي به متوسط استخدام وحدة المعالجة المركزية.
يوضح تحليل هندسي للبحث المتجهي في PostgreSQL أن أداء HNSW قد يتدهور عندما يتجاوز الرسم النشط سعة الذاكرة، لأن الاجتياز ذي الوصول العشوائي يصبح حساسًا لحالات فقدان التخزين المؤقت. وقد تتغير إصدارات Immich وتطبيقات الفهارس، لذا استخدم هذا التحليل لاختبار الآلية، لا بوصفه وصفة إعدادات.
قِس استعلامًا دلاليًا ثابتًا بعد إعادة التشغيل، وبعد عملية إحماء واحدة، وبعد الوصول إلى مناطق غير مرتبطة من المكتبة. وقارن بين قراءات قاعدة البيانات، وسلوك إصابات التخزين المؤقت، وزمن استجابة الجهاز. إن كان التحسن بعد الإحماء قويًا ثم اختفى مع اتساع مجموعة العمل، فهذا يدعم فرضية ملاءمة الذاكرة؛ أما الاستعلامات البطيئة باستمرار فتشير إلى سبب آخر.
قد تتغير المرشحات وخطط الاستعلام مع عدد القيم
تغيّر الشروط المتعلقة بالتاريخ والشخص والمالك والألبوم وغيرها عدد المرشحين المتبقين قبل الترتيب أو أثناءه. ومع تغير توزيع البيانات، قد تحدد المرشحات المرئية نفسها نسبة أكبر بكثير من المكتبة. لذلك قد تكون إحصاءات قاعدة البيانات واختيارات الخطة مهمة حتى عندما لا يتغير مصطلح البحث نفسه.
تشير مراجعة لقيود pgvector إلى أن الجمع بين البحث المتجهي ومرشحات البيانات الوصفية قد يكون صعبًا، وأن أحمال العمل المتجهية تتشارك موارد المعالج والذاكرة والإدخال والإخراج في PostgreSQL مع الأعمال المعاملاتية. والمقال دليل عام على PostgreSQL، لذا فهو يدعم الآلية ولا يثبت خطة استعلام محددة في Immich.
أنشئ عمليتي بحث متطابقتين، إحداهما بمرشح واحد والأخرى بدونه، باستخدام مجموعتي نتائج معروفتين. وسجّل زمن الاستعلام من جهة الخادم ونشاط قاعدة البيانات، لا اكتمال العملية في المتصفح فقط. إذا نما زمن الاختيار بينما ظلت الصور المصغرة المُعادة سريعة، فركّز على الخطط والإحصاءات وملاءمة الفهرس والتزاحم بدلًا من تخزين الوسائط.
افصل بين اختيار النتائج وعرضها
قد تبدو الواجهة بطيئة بعد أن تكون قاعدة البيانات قد اختارت بالفعل معرّفات الأصول المطابقة. فما يزال العرض يتطلب البحث عن الصور المصغرة، وقراءة التخزين، ونقل الاستجابة، وفك الترميز على العميل. وقد تؤخر شجرة المشتقات المتنامية أو نقطة التحميل البعيدة هذه المرحلة الثانية، بينما يظل استعلام البحث الفعلي سليمًا.
يصف تقرير عن استيراد كبير بطئًا واسع النطاق في Immich بينما ظلت مئات الآلاف من مهام البيانات الوصفية والصور المصغرة في قائمة الانتظار. وهو يوضح ضغطًا متداخلًا في الخلفية، لا حدًا عامًا وحتميًا للتوسع، ويبيّن سبب وجوب إجراء اختبارات النمو مع نشاط قوائم الانتظار وبعد استنزافها.
استخدم توقيت المتصفح أو ملاحظات واجهة برمجة التطبيقات لتحديد اكتمال استجابة النتائج بصورة منفصلة عن ظهور آخر صورة مصغرة. وأعد تنفيذ بحث معروف مع إيقاف قوائم الانتظار، ثم مع تفعيلها. إذا تباطأت المعرّفات، فتحرَّ مسارات قاعدة البيانات والفهرس؛ وإذا تباطأت الصور فقط، فافحص تخزين الصور المصغرة، وتسليم الشبكة، وفك الترميز على العميل، وعمليات الإدخال والإخراج المتنافسة في الخلفية.
مركز التكنولوجيا والذكاء الاصطناعي
المزيد للقراءة

ما هي حالة Immich، وما الأجزاء التي يجب أن تستمر؟
تتضمن حالة Immich الملفات الأصلية، والعلاقات في قاعدة البيانات، والهوية، والإعدادات، والمشتقات؛ احفظ كل عنصر منها وفقًا لإمكانية إعادة إنشائه.

كيف يتعامل Immich مع المصادقة عبر الجلسات المحلية والبعيدة؟
يستخدم Immich هويةً من جهة الخادم مع جلسات العميل، بينما قد تتسبب ترويسات الوكيل والأصول وعمليات إعادة توجيه OIDC في اختلاف السلوك محليًا وعن...

لماذا يتصرف Immich بشكل مختلف بعد إعادة تشغيل الحاوية؟
بعد إعادة تشغيل Immich، يُتوقَّع فقدان ذاكرة التخزين المؤقت المؤقتة؛ أما التغييرات المستمرة في تسجيل الدخول أو قاعدة البيانات أو الوسائط فتشير إلى أعطال...

