|Developer(s)||Oracle and MariaDB|
|License||GNU General Public License|
MEMORY is a storage engine for MySQL and MariaDB relational database management systems, developed by Oracle and MariaDB. Before the version 4.1 of MySQL it was called Heap.
SHOW ENGINES command describes MEMORY as: Hash based, stored in memory, useful for temporary tables.
MEMORY writes table data in-memory. While the table structures are persisted on-disk, the rows in MEMORY tables are lost when MySQL stops.
MEMORY is designed to store data that must be accessed quickly, for example caches, or intermediate data that needs to be transformed before storing it to regular tables.
In MariaDB and before MySQL 5.6, MEMORY was used for internal temporary tables, e.g. to materialize the intermediate results of a query. However, MEMORY tables don't support BLOB and TEXT types, and the user may limit the total size of MEMORY tables and temporary tables. When an internal temporary table could not be created with the MEMORY engine, it had to be created on disk, which is slower. For this reason Percona Server implemented improvements to MEMORY to support BLOB and TEXT.
In MySQL 8.0, by default the TempTable engine is used in place of MEMORY for internal temporary tables.