•Optional disk-backed operation for data durability. 

•Shared-nothing architecture and multiple-host operation with no single point of failure, enabling 99.999% availability. 

•Automatic data distribution across nodes; application developers need not craft custom sharding or partitioning solutions. 

•Support for variable-length data types (including BLOB  and TEXT ) not supported by MEMORY . 

## Partitioning 

## Performance Characteristics 

MEMORY  tables cannot be partitioned. 

MEMORY  performance is constrained by contention resulting from single-thread execution and table lock overhead when processing updates. This limits scalability when load increases, particularly for statement mixes that include writes. 

Despite the in-memory processing for MEMORY  tables, they are not necessarily faster than InnoDB  tables on a busy server, for general-purpose queries, or under a read/write workload. In particular, the table locking involved with performing updates can slow down concurrent usage of MEMORY  tables from multiple sessions. 

Depending on the kinds of queries performed on a MEMORY  table, you might create indexes as either the default hash data structure (for looking up single values based on a unique key), or a general-purpose B- tree data structure (for all kinds of queries involving equality, inequality, or range operators such as less than or greater than). The following sections illustrate the syntax for creating both kinds of indexes. A common performance issue is using the default hash indexes in workloads where B-tree indexes are more efficient. 

## Characteristics of MEMORY Tables 

The MEMORY  storage engine does not create any files on disk. The table definition is stored in the MySQL data dictionary. 

MEMORY  tables have the following characteristics: 

•Space for MEMORY  tables is allocated in small blocks. Tables use 100% dynamic hashing for inserts. No overflow area or extra key space is needed. No extra space is needed for free lists. Deleted rows are put in a linked list and are reused when you insert new data into the table. MEMORY  tables also have none of the problems commonly associated with deletes plus inserts in hashed tables. 

• MEMORY  tables use a fixed-length row-storage format. Variable-length types such as VARCHAR  are stored using a fixed length. 

• MEMORY  tables cannot contain BLOB  or TEXT  columns. 

• MEMORY  includes support for AUTO_INCREMENT  columns. 

•Non- TEMPORARY MEMORY  tables are shared among all clients, just like any other non- TEMPORARY  table. 

## DDL Operations for MEMORY Tables 

To create a MEMORY  table, specify the clause ENGINE=MEMORY  on the CREATE TABLE  statement. 

