Ignite Summit 2025 — Watch on demand 

Edit

Persistent Storage

Overview

Apache Ignite Persistence is designed to provide a quick and responsive persistent storage. When using the persistent storage, Ignite stores all the data on disk, and loads as much data as it can into RAM for processing.

When persistence is enabled, Ignite stores each partition in a separate file on disk. In addition to data partitions, Ignite stores indexes and metadata.

Checkpointing

Checkpointing is the process of copying dirty pages from RAM to partition files on disk. A dirty page is a page that was updated in RAM but was not written to the respective partition file.

After a checkpoint is created, all changes are persisted to disk and will be available if the node crashes and is restarted.

Checkpointing is designed to ensure durability of data and recovery in case of a node failure.

This process helps to utilize disk space frugally by keeping pages in the most up-to-date state on disk.

Configuration Properties

The following table describes some properties of persistent data storage:

Property Default Description

name

The name of the data region.

size

256 * 1024 * 1024

Sets the space allocated to the data region, in bytes.

replacementMode

CLOCK

Sets the page replacement algorithm.

pageSize

16384

The size of pages in the storage, in bytes.

The table below describes checkpoint configuration:

Property Default Description

checkpointDelayMillis

200

Delay before staring a checkpoint after receiving the command.

checkpointThreads

4

Number of CPU threads dedicated to checkpointing.

compactionThreads

4

Number of CPU threads dedicated to data compaction.

interval

180000

Interval between checkpoints in milliseconds.

intervalDeviation

40

Allowed deviation in checkpoint interval, percent.

logReadLockThresholdTimeout

0

Threshold for logging long read locks, in milliseconds.

readLockTimeout

10000

Timeout for checkpoint read lock acquisition, in milliseconds.

useAsyncFileIoFactory

true

If Ignite uses asynchronous file I/O operations provider.

Configuration Example

The example below shows how to configure one data region that uses Ignite persistence:

ignite config set --type cluster \
"{
    aipersist.regions: [{
        name: btree_persistent_region,
        maxSize: 256000000
    }]
}"