21.6
EventStoreDB 21.6
- Released: 29 June 2021
- Supported until: October 2021
21.6.0
In this release
Persistent subscriptions to $all
Persistent Subscriptions over gRPC now support subscribing to the $all stream, with an optional filter. Support for these subscriptions will be released for gRPC clients shortly. These subscriptions can only be created in a gRPC client, not through the UI or the TCP clients.
Interpreted runtime for projections
We have introduced a new Interpreted runtime for projections, which replaces the existing V8 engine.
The interpreted runtime is lighter-weight and easier to maintain than the existing legacy runtime. It will also allow us to package EventStoreDB for ARM processors and to provide a better debugging experience in the future.
This new runtime is enabled by default, but the legacy engine can be re-enabled by setting the ProjectionRuntime
option to Legacy
.
Experimental v3 Log Format
21.6.0 includes the first preview of the new log format that we are working on. This new format is the first step towards some exciting new features and improved performance for larger databases.
At the moment, the new log format should behave similarly to the existing one. You can enable it by setting the DbLogFormat
option to ExperimentalV3
if you want to check it out.
Please be aware that this log format version is not compatible with the log V2 format, and is itself subject to change. As such, it is not meant for running in production, and can only be used for new databases.
BatchAppend for gRPC
Support for a more performant append operation has been added to the gRPC proto. This will make appending large numbers of events much faster. This does come with some restrictions such as all appends made using a single user specified at the connection level rather than the operation level.
Auto configuration on startup
There are a few configuration options that need to be tuned when running EventStoreDB on larger instances or machines in order to make the most of the available resources. To help with that, some options are now configured automatically at startup based on the system resources. These options are StreamInfoCacheCapacity
, ReaderThreadsCount
, and WorkerThreads
.
If you want to disable this behaviour, you can do so by simply overriding the configuration for the options.
StreamInfoCacheCapacity
StreamInfoCacheCapacity
sets the maximum number of entries to keep in the stream info cache. This is the lookup that contains the information of any stream that has recently been read or written to. Having entries in this cache significantly improves write and read performance to cached streams on larger databases.
The cache is configured at startup based on the available free memory at the time. If there is 4gb or more available, it will be configured to take at most 75% of the remaining memory, otherwise it will take at most 50%. The minimum that it can be set to is 100,000 entries.
ReaderThreadsCount
ReaderThreadsCount
configures the number of reader threads available to EventStoreDB. Having more reader threads allows more concurrent reads to be processed.
The reader threads count will be set at startup to twice the number of available processors, with a minimum of 4 and a maximum of 16 threads.
WorkerThreads
WorkerThreads
configures the number of threads available to the pool of worker services. At startup the number of worker threads will be set to 10 if there are more than 4 reader threads. Otherwise, it will be set to have 5 threads available.