# Housekeeping

{% hint style="warning" %}
**This is the manual for older MicroStream versions (Version < 5.0).**

**The new documentation (Version >= 5.0) is located at:**

[https://docs.microstream.one/](https://docs.microstream.one/manual)
{% endhint %}

## Intervall and Time Budget

[Housekeeping ](https://manual.docs.microstream.one/2.1/data-store/housekeeping)interval and time budget is configured by setting up a `StorageHousekeepingController`.

Available properties are:

* [**House keeping interval**](https://manual.docs.microstream.one/2.1/data-store/properties#housekeepinginterval)\
  interval the housekeeping is triggered in milliseconds, \
  default once per every second<br>
* [**House keeping budget**](https://manual.docs.microstream.one/2.1/data-store/properties#housekeepingnanotimebudget)\
  time budget for housekeeping in nanoseconds,\
  default is 0.01 seconds

```java
EmbeddedStorageManager storage = EmbeddedStorage.Foundation(
	Storage.ConfigurationBuilder()
		.setHousekeepingController(Storage.HousekeepingController(1000, 10_000_000))
		.createConfiguration())
	.start();
```

## File Sizes and Payload

The desired file min and max sizes and payload ratio is configured by the `StorageDataFileEvaluator`:

available properties are:

* **Data file minimum size**\
  Files smaller then minimum file size will be merged with other files if possible, default is 1 MB.<br>
* **Data file maximum size**\
  Files larger then maximum file size will be split in smaller ones, default is 8 MB.<br>
* [**Data file dissolve ratio**](https://manual.docs.microstream.one/2.1/data-store/properties#datafiledissolveratio)\
  Data file payload min ratio to trigger file refactoring, default is 0.75 (75%).

```java
EmbeddedStorageManager storage = EmbeddedStorage.Foundation(
	Storage.ConfigurationBuilder()
		.setFileEvaluator(Storage.DataFileEvaluator(1024*1024, 1024*1024*8, 0.75))
		.createConfiguration())
	.start();
```

## Cache

The lifetime of objects in the internal entity cache can be configured by the `StorageEntityCacheEvaluator`:

Available properties are:

* **Entity cache threshold**

  Abstract threshold value, roughly comparable to size in bytes with a time component, at which a cache must be cleared of some entities. Default is `1000000000`.<br>
* **Entity cache timeout**\
  Time in milliseconds after that an entity is considered to be old if not read meanwhile. must be greater zero, default is `86400000ms` (1 day).

```java
EmbeddedStorageManager storage = EmbeddedStorage.Foundation(
	Storage.ConfigurationBuilder()
		.setEntityCacheEvaluator(Storage.EntityCacheEvaluator(
			86_400_000, 
			1_000_000_000))
		.createConfiguration())
	.start();
```

{% hint style="info" %}
For external configuration see: [Properties](https://manual.docs.microstream.one/2.1/data-store/configuration/properties)
{% endhint %}
