الإخلاءCompatible with Milvus 2.6.4+
يدير الإخلاء موارد ذاكرة التخزين المؤقت لكل عقدة استعلام في Milvus. عند تمكينه، يقوم تلقائيًا بإزالة البيانات المخزنة مؤقتًا بمجرد الوصول إلى عتبات الموارد، مما يضمن أداءً مستقرًا ويمنع استنفاد الذاكرة أو القرص.
يستخدم الإخلاء سياسة أقل استخدامًا (LRU) لاستعادة مساحة ذاكرة التخزين المؤقت. يتم تخزين البيانات الوصفية دائمًا في ذاكرة التخزين المؤقت ولا يتم إخلاؤها أبدًا، لأنها ضرورية لتخطيط الاستعلامات وعادةً ما تكون صغيرة.
يجب تمكين الإخلاء بشكل صريح. بدون التهيئة، ستستمر البيانات المخزنة مؤقتًا في التراكم حتى يتم استنفاد الموارد.
أنواع الإخلاء
يدعم ميلفوس وضعين متكاملين للإخلاء(المزامنة والإخلاء غير المتزامن) يعملان معاً من أجل إدارة مثالية للموارد:
المزامنة |
الإخلاء المتزامن |
الإخلاء غير المتزامن |
|---|---|---|
الزناد |
يحدث أثناء الاستعلام أو البحث عندما يتجاوز استخدام الذاكرة أو القرص الحدود الداخلية. |
يتم تشغيله بواسطة مؤشر ترابط في الخلفية عندما يتجاوز الاستخدام علامة مائية عالية أو عندما تصل البيانات المخزنة مؤقتًا إلى وقت التشغيل (TTL). |
السلوك |
تتوقف عمليات الاستعلام أو البحث مؤقتًا مؤقتًا بينما تستعيد "عقدة الاستعلام" مساحة التخزين المؤقت. تستمر عملية الإخلاء حتى ينخفض الاستخدام إلى ما دون العلامة المائية المنخفضة أو تحدث مهلة. إذا تم الوصول إلى المهلة ولم يكن بالإمكان استعادة بيانات كافية، فقد يفشل الاستعلام أو البحث. |
يتم تشغيله بشكل دوري في الخلفية بشكل استباقي لإخلاء البيانات المخزنة مؤقتًا عندما يتجاوز الاستخدام العلامة المائية العالية أو عند انتهاء صلاحية البيانات بناءً على مدة صلاحية التخزين المؤقت. يستمر الإخلاء حتى ينخفض الاستخدام إلى ما دون العلامة المائية المنخفضة. لا يتم حظر الاستعلامات. |
الأفضل ل |
أحمال العمل التي يمكن أن تتحمل طفرات وقت الاستجابة القصيرة أو التوقف المؤقت أثناء ذروة الاستخدام. مفيد عندما لا يمكن للإخلاء غير المتزامن استعادة المساحة بالسرعة الكافية. |
أحمال العمل الحساسة للكمون التي تتطلب أداء استعلام سلسًا ويمكن التنبؤ به. مثالية لإدارة الموارد الاستباقية. |
تحذيرات |
يمكن أن يسبب تأخيرات قصيرة في الاستعلام أو مهلات في حالة عدم توفر بيانات كافية قابلة للإخلاء. |
يتطلب علامات مائية عالية/منخفضة مضبوطة بشكل صحيح وإعدادات TTL. نفقات زائدة طفيفة من مؤشر ترابط الخلفية. |
التهيئة |
ممكّن عبر |
ممكّن عبر |
الإعداد الموصى به:
يمكن تمكين كلا وضعي الإخلاء معًا لتحقيق التوازن الأمثل، شريطة أن يستفيد عبء العمل لديك من التخزين المتدرج ويمكنه تحمل زمن الوصول إلى زمن الوصول المرتبط بالإخلاء.
بالنسبة لاختبار الأداء أو السيناريوهات الحرجة لوقت الاستجابة، ضع في اعتبارك تعطيل الإخلاء بالكامل لتجنب الحمل الزائد لجلب الشبكة بعد الإخلاء.
بالنسبة للحقول والفهارس القابلة للإخلاء، تتطابق وحدة الإخلاء مع دقة التحميل - يتم إخلاء الحقول العددية/المتجهات حسب القطعة ويتم إخلاء الفهارس العددية/المتجهات حسب المقطع.
تمكين الإخلاء
تكوين الإخلاء ضمن queryNode.segcore.tieredStorage في milvus.yaml:
queryNode:
segcore:
tieredStorage:
evictionEnabled: true # Enables synchronous eviction
backgroundEvictionEnabled: true # Enables background (asynchronous) eviction
المعلمة |
النوع |
القيم |
الوصف |
حالة الاستخدام الموصى بها |
|---|---|---|---|---|
|
بولي |
|
مفتاح رئيسي لاستراتيجية الإخلاء. الإعداد الافتراضي إلى |
يتم تعيينه دائمًا على |
|
بool |
|
تشغيل الإخلاء بشكل غير متزامن في الخلفية. يتطلب |
استخدم |
تكوين العلامات المائية
تحدد العلامات المائية متى يبدأ إخلاء ذاكرة التخزين المؤقت وينتهي لكل من الذاكرة والقرص. لكل نوع مورد عتبتان:
علامة مائية عالية: يبدأ الإخلاء عندما يتجاوز الاستخدام هذه القيمة.
علامة مائية منخفضة: يستمر الإخلاء حتى يقل الاستخدام عن هذه القيمة.
يسري هذا التكوين فقط عند تمكين الإخلاء.
مثال YAML:
queryNode:
segcore:
tieredStorage:
# Memory watermarks
memoryLowWatermarkRatio: 0.75 # Eviction stops below 75% memory usage
memoryHighWatermarkRatio: 0.8 # Eviction starts above 80% memory usage
# Disk watermarks
diskLowWatermarkRatio: 0.75 # Eviction stops below 75% disk usage
diskHighWatermarkRatio: 0.8 # Eviction starts above 80% disk usage
المعلمة |
النوع |
النطاق |
الوصف |
حالة الاستخدام الموصى بها |
|---|---|---|---|---|
|
عائم |
(0.0, 1.0] |
مستوى استخدام الذاكرة حيث يتوقف الإخلاء. |
ابدأ من |
|
عائم |
(0.0, 1.0] |
مستوى استخدام الذاكرة حيث يبدأ الإخلاء غير المتزامن. |
ابدأ من |
|
تعويم |
(0.0, 1.0] |
مستوى استخدام القرص حيث يتوقف الإخلاء. |
ابدأ من |
|
عائم |
(0.0, 1.0] |
مستوى استخدام القرص حيث يبدأ الإخلاء غير المتزامن. |
ابدأ من |
أفضل الممارسات:
لا تقم بتعيين علامات مائية عالية أو منخفضة أعلى من 0.80 تقريبًا لترك مساحة للاستخدام الثابت لعقدة الاستعلام الثابتة وعمليات الاندفاع في وقت الاستعلام.
تجنب الفجوات الكبيرة بين العلامات المائية المرتفعة والمنخفضة؛ فالفجوات الكبيرة تطيل كل دورة إخلاء ويمكن أن تضيف وقت استجابة.
تكوين TTL TTL لذاكرة التخزين المؤقت
يقوموقت التخزين المؤقت للذاكرة المؤقتة (TTL) تلقائيًا بإزالة البيانات المخزنة مؤقتًا بعد مدة محددة، حتى إذا لم يتم الوصول إلى عتبات الموارد. وهو يعمل جنبًا إلى جنب مع الإخلاء LRU لمنع البيانات القديمة من شغل ذاكرة التخزين المؤقت إلى أجل غير مسمى.
تتطلب ذاكرة التخزين المؤقت TTL backgroundEvictionEnabled: true ، حيث يتم تشغيلها على نفس مؤشر ترابط الخلفية.
مثال YAML:
queryNode:
segcore:
tieredStorage:
evictionEnabled: true
backgroundEvictionEnabled: true
# Set the cache expiration time to 604,800 seconds (7 days),
# and expired caches will be cleaned up by a background thread.
cacheTtl: 604800
المعلمة |
النوع |
الوحدة |
الوصف |
حالة الاستخدام الموصى بها |
|---|---|---|---|---|
|
عدد صحيح |
ثانية |
المدة قبل انتهاء صلاحية البيانات المخزنة مؤقتاً. تتم إزالة العناصر منتهية الصلاحية في الخلفية. |
استخدم TTL TTL قصيرة (ساعات) للبيانات الديناميكية للغاية؛ استخدم TTL طويلة (أيام) لمجموعات البيانات المستقرة. قم بتعيين 0 لتعطيل انتهاء الصلاحية المستند إلى الوقت. |