# Using Channels

{% 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 %}

## Channel Usage

[Channels](https://manual.docs.microstream.one/3.0/data-store/properties#channelcount) are the IO threads used by the MicroStream storage engine. A single channel represents the unity of a thread, a storage directory and cached data. Increasing the number of channels means to run more IO threads.

The channel count is an important configuration value that impacts to IO performance.&#x20;

## Channel Configuration

For the channel configuration the following configuration [properties ](https://manual.docs.microstream.one/3.0/data-store/configuration/properties)are available:

* **Channel count**

  The number of channels that MicroStream will use. Must be  $$2^n$$&#x20;
* **Channel directory prefix**

  The channel directory will be prefix+channelNumber e.g. "ch\_0" if prefix is "ch\_"
* **Data file prefix**\
  default is "channel\_"
* **Data file suffix**\
  deflaut id ".dat"

Channel file size configuration is done by the the [Storage Data File Evaluator](https://manual.docs.microstream.one/3.0/data-store/housekeeping#file-sizes-and-payload).

They can be set By  `storage.embedded.configuration API:`&#x20;

{% tabs %}
{% tab title="Java" %}

```java
embeddedStorageManager storageManager = Configuration.Default()
	.setChannelCount(4)
	.setChannelDirectoryPrefix("channel_")
	.setDataFilePrefix("channel_")
	.setDataFileSuffix(".bin")
	.createEmbeddedStorageFoundation()
	.createEmbeddedStorageManager();
```

{% endtab %}

{% tab title="Xml" %}

```
<properties>
	<property name="channelCount" value="4" />
	<property name="channelDirectoryPrefix" value="channel_" />
	<property name="dataFilePrefix value="channel_" />
	<property name="dataFileSuffix" value=".dat" />
</properties>
```

{% endtab %}

{% tab title="ini" %}

```
channelCount = 4
channelDirectoryPrefix = prefix
dataFilePrefix = channel_
dataFileSuffix = .dat
```

{% endtab %}
{% endtabs %}

See also: [Configuration](https://manual.docs.microstream.one/3.0/data-store/configuration/..#external-configuration)

Or by setting a `StorageFileProvider` using the`EmbeddedStorageFoundation`factory

```java
EmbeddedStorageManager storage = EmbeddedStorage.Foundation(
	Storage.ConfigurationBuilder()
		.setChannelCountProvider(Storage.ChannelCountProvider(4))
		.setStorageFileProvider(StorageFileProvider.Builder()
			.setBaseDirectory("storage")
			.setChannelDirectoryPrefix("prefix")
			.setStorageFilePrefix("channel-")
        	.setStorageFileSuffix(".bin")
			.createFileProvider()).createConfiguration()
		).start();
```
