Milvus
Zilliz
Beranda

Praktik Terbaik untuk Penyimpanan BerjenjangCompatible with Milvus 2.6.4+

Milvus menyediakan Penyimpanan Berjenjang untuk membantu Anda menangani data berskala besar secara efisien sekaligus menyeimbangkan latensi kueri, kapasitas, dan penggunaan sumber daya. Panduan ini merangkum konfigurasi yang direkomendasikan untuk beban kerja yang umum dan menjelaskan alasan di balik setiap strategi penyetelan.

Sebelum Anda memulai

  • Milvus v2.6.4 atau yang lebih baru

  • QueryNodes harus memiliki sumber daya lokal khusus (memori dan disk). Lingkungan bersama dapat mendistorsi estimasi cache dan menyebabkan kesalahan penilaian penggusuran.

Pilih strategi yang tepat

Tiered Storage menawarkan strategi pemuatan dan caching yang fleksibel yang dapat dikombinasikan agar sesuai dengan beban kerja Anda.

Sasaran

Fokus yang disarankan

Mekanisme utama

Meminimalkan latensi kueri pertama

Memuat bidang-bidang penting secara preload

Pemanasan

Menangani data berskala besar secara efisien

Memuat sesuai permintaan

Beban Malas + Beban Parsial

Menjaga stabilitas jangka panjang

Mencegah cache meluap

Penggusuran

Menyeimbangkan kinerja dan kapasitas

Menggabungkan pramuat dan cache dinamis

Konfigurasi hibrida

Skenario 1: pengambilan waktu nyata dan latensi rendah

Kapan menggunakan

  • Latensi kueri sangat penting (misalnya, rekomendasi waktu nyata atau peringkat penelusuran)

  • Indeks vektor inti dan filter skalar sering diakses

  • Performa yang konsisten lebih penting daripada kecepatan startup

Konfigurasi yang disarankan

# milvus.yaml
queryNode:
  segcore:
    tieredStorage:
      warmup:
        # scalar field/index warm-up to eliminate first-time latency
        scalarField: sync
        scalarIndex: sync
        # warm-up of vector fields is disabled (if the original vector is not required)
        vectorField: disable
        # vector indexes warm-up to elminate first-time latenct
        vectorIndex: sync
      # enable cache eviction, and also turn on background asynchronous eviction
      # to reduce the triggering of synchronous eviction.
      evictionEnabled: true
      backgroundEvictionEnabled: true
      memoryLowWatermarkRatio: 0.75
      memoryHighWatermarkRatio: 0.8
      diskLowWatermarkRatio: 0.75
      diskHighWatermarkRatio: 0.8
      # no expiration time, which avoids frequent reloading
      cacheTtl: 0

Dasar pemikiran

  • Pemanasan menghilangkan latensi pemanggilan pertama untuk indeks skalar dan vektor frekuensi tinggi.

  • Penggusuran latar belakang mempertahankan tekanan cache yang stabil tanpa memblokir kueri.

  • Menonaktifkan TTL cache menghindari pemuatan ulang yang tidak perlu untuk data panas.

Skenario 2: offline, analisis batch

Kapan digunakan

  • Toleransi latensi kueri tinggi

  • Beban kerja melibatkan kumpulan data yang sangat besar atau banyak segmen

  • Kapasitas dan throughput diprioritaskan di atas daya tanggap

Konfigurasi yang disarankan

# milvus.yaml
queryNode:
  segcore:
    tieredStorage:
      enabled: true
      warmup:
        # disable scalar field/index warm-up to speed up loading
        scalarField: disable
        scalarIndex: disable
        # disable vector field/index warm-up to speed up loading
        vectorField: disable
        vectorIndex: disable
      # enable cache eviction, and also turn on background asynchronous eviction
      # to reduce the triggering of synchronous eviction.
      evictionEnabled: true
      backgroundEvictionEnabled: true
      memoryLowWatermarkRatio: 0.7
      memoryHighWatermarkRatio: 0.85
      diskLowWatermarkRatio: 0.7
      diskHighWatermarkRatio: 0.85
      # use 1 day expiration to clean unused cache
      cacheTtl: 86400

Dasar pemikiran

  • Menonaktifkan pemanasan akan mempercepat pengaktifan saat menginisialisasi banyak segmen.

  • Tanda air yang lebih tinggi memungkinkan penggunaan cache yang lebih padat, sehingga meningkatkan kapasitas beban total.

  • Cache TTL secara otomatis membersihkan data yang tidak terpakai untuk mengosongkan ruang lokal.

Skenario 3: penerapan hibrida (campuran online + offline)

Kapan digunakan

  • Satu cluster melayani beban kerja online dan analitik

  • Beberapa koleksi membutuhkan latensi rendah, sementara yang lain memprioritaskan kapasitas

Strategi yang disarankan

  • Menerapkan konfigurasi waktu nyata ke koleksi yang sensitif terhadap latensi

  • Menerapkan konfigurasi offline ke koleksi analitik atau arsip

  • Sesuaikan rasio evictableMemoryCacheRatio, cacheTtl, dan watermark secara independen untuk setiap jenis beban kerja

Dasar pemikiran

Menggabungkan konfigurasi memungkinkan kontrol alokasi sumber daya yang lebih baik.

Koleksi kritis mempertahankan jaminan latensi rendah, sementara koleksi sekunder dapat menangani lebih banyak segmen dan volume data.

Tips penyetelan tambahan

Aspek

Rekomendasi

Penjelasan

Lingkup Pemanasan

Hanya memuat bidang atau indeks yang memiliki frekuensi kueri yang tinggi.

Pemuatan awal yang tidak perlu akan meningkatkan waktu muat dan penggunaan sumber daya.

Penyetelan penggusuran

Mulailah dengan tanda air default (75-80%) dan sesuaikan secara bertahap.

Celah kecil menyebabkan penggusuran yang sering terjadi; celah yang besar akan menunda pelepasan sumber daya.

Cache TTL

Nonaktifkan untuk set data panas yang stabil; aktifkan (misalnya, 1-3 hari) untuk data dinamis.

Mencegah penumpukan cache yang basi sekaligus menyeimbangkan overhead pembersihan.

Rasio overcommit

Hindari nilai > 0,7 kecuali jika ruang sumber daya besar.

Overcommit yang berlebihan dapat menyebabkan cache meronta-ronta dan latensi yang tidak stabil.

Pemantauan

Pantau rasio hit cache, pemanfaatan sumber daya, dan frekuensi penggusuran.

Beban dingin yang sering terjadi dapat mengindikasikan bahwa pemanasan atau tanda air perlu disesuaikan.

Coba Milvus yang Dikelola secara Gratis

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

Mulai
Umpan balik

Apakah halaman ini bermanfaat?