This is a pretty big deal isn't it? I've never used Mnesia but that 2GB limit was a common warning I came across in the docs and blog posts, despite noting it was a great DB to work with.
Allegedly this has already been running at Klarna in production for a while. LevelDB backend from Basho (eleveldb, it has extra optimizations and improvements besides just Erlang wrapper) has been used.
Granted 15-20 some years ago perhaps 2GB was BigData(TM) ;-)
For a while I understand you could set up sharding, so each shard is 2GB and spread shards across nodes.
* dirty schedulers improved
which means much better scheduling of long running NIFs from what I understand:
https://medium.com/@jlouis666/erlang-dirty-scheduler-overhea...
What happens when it hits that limit? Crash, or try to GC, or... ?
Configurable, but can kill the process in question and/or log when it occurs. Their suggestion is to log it first and tune it from there since heap size isn't easily predictable.
EDIT: Scroll down a little bit to get this particular flag documentation.
Some changes:
* New state machine module: gen_statem (ssh module uses it as a first example).
* 3-5x times faster open_port(spawn, ...)
* Must faster and better tracing (also lttng support)
* Keeping messages off heap for processes
* mnesia-ext : pluggable storage for Mnesia. This removes the 2GB per shard limit.
* Allow limiting process's max heap usage
* Observer tool allows configuration update frequency and length of graph windows
* crypto uses EVP calls so should be accelerated by hardware were supported
* Parallel/faster module code loading