Milvus
Zilliz
Beranda
  • Panduan Pengguna
  • Home
  • Docs
  • Panduan Pengguna

  • Optimalisasi Penyimpanan

  • Penyimpanan Berjenjang

  • Penggusuran

PenggusuranCompatible with Milvus 2.6.4+

Eviction mengelola sumber daya cache dari setiap QueryNode di Milvus. Ketika diaktifkan, fitur ini secara otomatis menghapus data yang ditembolok setelah ambang batas sumber daya tercapai, memastikan kinerja yang stabil dan mencegah kehabisan memori atau disk.

Penggusuran menggunakan kebijakan Least Recently Used (LRU ) untuk mendapatkan kembali ruang cache. Metadata selalu di-cache dan tidak pernah digusur, karena metadata sangat penting untuk perencanaan kueri dan biasanya berukuran kecil.

Penggusuran harus diaktifkan secara eksplisit. Tanpa konfigurasi, data yang ditembolok akan terus terakumulasi hingga sumber daya habis.

Jenis penggusuran

Milvus mendukung dua mode penggusuran yang saling melengkapi(sinkronisasi dan asinkronisasi) yang bekerja bersama untuk manajemen sumber daya yang optimal:

Aspek

Penggusuran Sinkronisasi

Penggusuran Asinkron

Pemicu

Terjadi selama kueri atau pencarian ketika penggunaan memori atau disk melebihi batas internal.

Dipicu oleh thread latar belakang saat penggunaan melebihi batas tinggi atau saat data yang di-cache mencapai time-to-live (TTL).

Perilaku

Operasi kueri atau pencarian berhenti sementara saat QueryNode mendapatkan kembali ruang cache. Penggusuran berlanjut hingga penggunaan turun di bawah watermark rendah atau terjadi timeout. Jika batas waktu tercapai dan data tidak mencukupi untuk diambil kembali, kueri atau pencarian mungkin gagal.

Berjalan secara berkala di latar belakang, secara proaktif mengusir data yang ditembolok ketika penggunaan melebihi tanda air tinggi atau ketika data kedaluwarsa berdasarkan TTL. Pengusiran berlanjut hingga penggunaan turun di bawah tanda air rendah. Kueri tidak diblokir.

Paling cocok untuk

Beban kerja yang dapat mentoleransi lonjakan latensi singkat atau jeda sementara selama penggunaan puncak. Berguna ketika penggusuran asinkronisasi tidak dapat mendapatkan kembali ruang dengan cukup cepat.

Beban kerja yang sensitif terhadap latensi yang membutuhkan kinerja kueri yang lancar dan dapat diprediksi. Ideal untuk manajemen sumber daya yang proaktif.

Perhatian

Dapat menyebabkan penundaan kueri singkat atau waktu habis jika data yang dapat digusur tidak mencukupi.

Membutuhkan pengaturan tanda air tinggi/rendah dan TTL yang disetel dengan benar. Sedikit overhead dari utas latar belakang.

Konfigurasi

Diaktifkan melalui evictionEnabled: true

Diaktifkan melalui backgroundEvictionEnabled: true (memerlukan evictionEnabled: true pada saat yang sama)

Penyiapan yangdisarankan:

  • Kedua mode penggusuran dapat diaktifkan bersamaan untuk keseimbangan optimal, asalkan beban kerja Anda mendapat manfaat dari Penyimpanan Berjenjang dan dapat mentolerir latensi pengambilan terkait penggusuran.

  • Untuk pengujian performa atau skenario yang sangat penting, pertimbangkan untuk menonaktifkan penggusuran sepenuhnya untuk menghindari overhead pengambilan jaringan setelah penggusuran.

Untuk bidang dan indeks yang dapat digusur, unit penggusuran sesuai dengan perincian pemuatan-bidang skalar/vektor digusur berdasarkan potongan, dan indeks skalar/vektor digusur berdasarkan segmen.

Mengaktifkan penggusuran

Konfigurasikan penggusuran di bawah queryNode.segcore.tieredStorage di milvus.yaml:

queryNode:
  segcore:
    tieredStorage:
      evictionEnabled: true             # Enables synchronous eviction
      backgroundEvictionEnabled: true   # Enables background (asynchronous) eviction

Parameter

Jenis

Nilai

Deskripsi

Kasus penggunaan yang disarankan

evictionEnabled

bool

true/false

Sakelar utama untuk strategi penggusuran. Default ke false. Mengaktifkan mode penggusuran sinkronisasi.

Selalu setel ke true di Penyimpanan Berjenjang.

backgroundEvictionEnabled

bool

true/false

Menjalankan penggusuran secara asinkron di latar belakang. Memerlukan evictionEnabled: true. Setelan default ke false.

Gunakan true untuk kinerja kueri yang lebih lancar; ini mengurangi frekuensi penggusuran sinkronisasi.

Mengonfigurasi tanda air

Tanda air menentukan kapan penggusuran cache dimulai dan diakhiri untuk memori dan disk. Setiap jenis sumber daya memiliki dua ambang batas:

  • Tanda air tinggi: Penggusuran dimulai saat penggunaan melebihi nilai ini.

  • Tanda air rendah: Penggusuran berlanjut hingga penggunaan turun di bawah nilai ini.

Konfigurasi ini hanya berlaku ketika penggusuran diaktifkan.

Contoh 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

Parameter

Jenis

Rentang

Deskripsi

Kasus penggunaan yang disarankan

memoryLowWatermarkRatio

mengambang

(0.0, 1.0]

Tingkat penggunaan memori di mana penggusuran berhenti.

Mulai dari 0.75. Turunkan sedikit jika memori QueryNode terbatas.

memoryHighWatermarkRatio

float

(0.0, 1.0]

Tingkat penggunaan memori di mana penggusuran asinkron dimulai.

Mulai dari 0.8. Jaga jarak yang masuk akal dari tanda air yang rendah (misalnya, 0,05-0,10) untuk mencegah pemicu yang sering terjadi.

diskLowWatermarkRatio

mengambang

(0.0, 1.0]

Tingkat penggunaan disk di mana penggusuran berhenti.

Mulai dari 0.75. Sesuaikan lebih rendah jika I / O disk terbatas.

diskHighWatermarkRatio

float

(0.0, 1.0]

Tingkat penggunaan disk di mana penggusuran asinkron dimulai.

Mulai di 0.8. Jaga jarak yang masuk akal dari tanda air yang rendah (mis., 0,05-0,10) untuk mencegah pemicu yang sering terjadi.

Praktik terbaik:

  • Jangan menetapkan watermark tinggi atau rendah di atas ~0,80 untuk menyisakan ruang untuk penggunaan statis QueryNode dan ledakan waktu kueri.

  • Hindari kesenjangan yang besar antara watermark tinggi dan rendah; kesenjangan yang besar akan memperpanjang setiap siklus penggusuran dan dapat menambah latensi.

Mengonfigurasi TTL cache

Cache Time-to-Live (TTL) secara otomatis menghapus data yang ditembolok setelah durasi yang ditetapkan, meskipun ambang batas sumber daya tidak tercapai. TTL bekerja bersama penggusuran LRU untuk mencegah data yang sudah basi menempati cache tanpa batas waktu.

Cache TTL membutuhkan backgroundEvictionEnabled: true, karena berjalan pada thread latar belakang yang sama.

Contoh 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

Parameter

Tipe

Satuan

Deskripsi

Kasus penggunaan yang disarankan

cacheTtl

bilangan bulat

detik

Durasi sebelum data yang di-cache kedaluwarsa. Item yang kedaluwarsa akan dihapus di latar belakang.

Gunakan TTL pendek (jam) untuk data yang sangat dinamis; gunakan TTL panjang (hari) untuk kumpulan data yang stabil. Tetapkan 0 untuk menonaktifkan kedaluwarsa berbasis waktu.

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?