> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lancedb.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Tiered Index Cache

> How LanceDB Enterprise caches deserialized index structures across memory and local disk.

**Applies to:** Embedded ❌, Enterprise ✅

The tiered index cache holds deserialized vector, full-text and scalar
index structures in memory, backed by a local-disk tier beneath it. When
memory fills, the cache serializes evicted entries and spills them to disk
instead of dropping them; a later hit on a spilled entry promotes it back
into memory. This lets a plan executor serve an index larger than its
available memory without re-reading and re-deserializing it from object
storage on every eviction. See [Architecture](https://docs.lancedb.com/index.md#architecture).

```mermaid theme={"theme":{"light":"vitesse-light","dark":"catppuccin-mocha"}}
%%{init: {"theme": "base", "themeVariables": {
  "background": "#ffffff", "primaryColor": "#ffffff", "primaryTextColor": "#221d19",
  "primaryBorderColor": "#ad9e95", "lineColor": "#6b625c", "textColor": "#221d19",
  "edgeLabelBackground": "#ffffff", "fontFamily": "Inter, sans-serif", "fontSize": "18px"
}}}%%
flowchart LR
    R["Index lookup"] --> M{"In memory?"}
    M -->|hit| Return["Served from memory"]
    M -->|miss| D{"Spilled to disk?"}
    D -->|hit| Promote["Deserialized,<br/>promoted into memory,<br/>served"]
    D -->|miss| O[("Object storage")]
    O --> Fill["Deserialized,<br/>loads into memory,<br/>served"]

    Evict["Memory eviction"] -.->|serialize, don't drop| D
    classDef default fill:#ffffff,stroke:#ad9e95,stroke-width:1px,color:#221d19
```

## Sharing the disk budget

Where enabled, the index disk tier and the
[data page cache](https://docs.lancedb.com/enterprise/data-page-cache.md)'s disk tier draw from one
combined, configurable disk allocation per executor, split between the two
tiers so neither one needs its own dedicated volume.

## Why it matters

Vector, full-text, and scalar indexes can easily outgrow available memory
on large tables. Without this cache, an eviction means re-reading and
re-deserializing that index from object storage on the next request --
slow, and repeated on every eviction. Spilling to local disk instead keeps
index lookups fast even when the working set is larger than memory, without
giving every executor enough memory to hold every index at once.

[Contact us](https://www.lancedb.com/contact) to learn more about how
caching is sized and tuned for your workload.

## Index cache interfaces

* [Cache Prewarm](https://docs.lancedb.com/enterprise/cache-prewarm.md) for warming this cache ahead
  of the first request.
* [Data Page Cache](https://docs.lancedb.com/enterprise/data-page-cache.md) for the related cache
  that holds raw table data pages instead of deserialized index structures.
* [Vector indexes](https://docs.lancedb.com/indexing/vector-index.md), [full-text indexes](https://docs.lancedb.com/indexing/fts-index.md),
  and [scalar indexes](https://docs.lancedb.com/indexing/scalar-index.md) for the index types this
  cache serves.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.