Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

İndeks Kullanımı

MenzeletDB, büyük tablolarda hızlı arama için bellek içi (in-memory) indeksler destekler.

İndeks Türleri

TürEn İyi KullanımKarmaşıklık
HashEşitlik aramaları (WHERE id = 5)O(1)
BTreeAralık aramaları (WHERE fiyat BETWEEN 100 AND 500)O(log N)

İndeks Komutları

İndeks Listesi

INDEX LIST

Tüm aktif in-memory indeksleri gösterir.

Eşitlik Araması (Hash İndeks)

INDEX LOOKUP urunler urun_adi Klavye

urunler tablosunda urun_adi sütununda Klavye değerini arar.

Aralık Araması (BTree İndeks)

INDEX SCAN urunler fiyat 100 500

urunler tablosunda fiyat sütununda 100 ile 500 arasındaki değerleri arar.

Desteklenen İndeks Değer Tipleri

TipAçıklama
IntTam sayı
StrMetin
DateTarih
TimestampZaman damgası
DecimalOndalıklı sayı
Uuid16-byte binary UUID

Otomatik İndeks Kullanımı

MenzeletDB optimizer’ı WHERE koşullarında indeks kullanılabilir sütunları otomatik tespit eder:

  • IndexLookupRule: Mantıksal planda Filter + TableScan kalıbını tespit eder ve varolan indeks üzerinden arama yapar
  • Boş sonuç optimizasyonu: İndeks araması boş dönerse EmptyRelation ile gerçek disk taraması yapılmaz
  • Epoch doğrulaması: İndeks versiyon numarası (epoch) ile tablo versiyon numarası (data_version) eşleşmezse indeks kullanılmaz (stale indeks koruması)

Bloom Filter

MenzeletDB, INSERT işlemlerinde duplicate key kontrolü için Bloom filter kullanır:

  • Her tablo için {tablo}.bloom dosyası oluşturulabilir
  • Kirschner-Mitzenmacher double hashing, FPR (False Positive Rate) ~%0.1
  • Bincode ile diske kalıcı olarak saklanır (save() / load())
  • INSERT strict modda: Bloom filter “yok” derse kesin yok; “var” derse Parquet’ten doğrulanır