Эта тема объясняет, как оптимизировать производительность CSS векторной базы данных с двух сторон — записи и запросов.
Запись векторных данных вызывает три основных накладных расхода: синхронизацию реплик, обновление индекса и слияние сегментов. Когда данные индекса записываются в реальном времени, частые операции обновления индекса генерируют большое количество небольших сегментов. Это приводит к частым операциям построения и слияния векторного индекса, которые потребляют избыточные ресурсы CPU/IO. Вы можете попробовать следующие решения для оптимизации производительности записи.
Производительность запросов зависит от следующих факторов: количество сегментов, механизм circuit breaker памяти и возврат полей. Чрезмерно большое количество сегментов влияет на эффективность поиска; когда off-heap память становится недостаточной, данные векторного индекса часто выгружаются и подгружаются в память; возврат всех полей увеличивает нагрузку во время фазы получения. Вы можете оптимизировать производительность запросов, устранив эти факторы.
Если ресурсы памяти кластера недостаточны, данные часто обновляются или требуется высокая актуальность данных, вы можете включить автоматическое истечение кеша, чтобы неактивные данные удалялись из кеша. Это помогает оптимизировать производительность системы, обеспечить согласованность данных и улучшить стабильность запросов. Используйте этот подход, когда данные часто обновляются или ресурсы памяти ограничены.
Выполните следующую команду, чтобы установить время истечения кеша:
PUT _cluster/settings{"persistent": {"native.cache.expiry.enabled": "true","native.cache.expiry.time": "30m"}}
Parameter | Type | Description |
|---|---|---|
native.cache.expiry.enabled | Boolean | Включать автоматическое истечение кэша. Диапазон значений:
|
native.cache.expiry.time | String | Тайм‑аут неактивных элементов кэша. Этот параметр применяется только когда native.cache.expiry.enabled=true. Значение: строка времени, например, 24h (24 часа) или 30m (30 минут). Значение по умолчанию: 24h. |