From Wikipedia, the free encyclopedia
Jump to: navigation, search
MemSQL logo.
Developer(s) MemSQL Inc.
Stable release 2.5 / November 25, 2013; 8 months ago (2013-11-25)
Preview release 3.0 / June 2, 2014; 2 months ago (2014-06-02)[1]
Written in C++
Operating system Linux
License Proprietary License

MemSQL is a distributed, in-memory database that is part of the NewSQL movement.[2] It is an ACID-compliant RDBMS that most notably converts SQL into C++ through code generation[citation needed]. It is being developed by MemSQL Inc., that was founded in 2011 and is a graduate of the Y Combinator startup program. MemSQL Inc. has raised more than $5 million to date from a variety of investors including First Round Capital, IA Ventures, NEA, and several prominent angels including Paul Buchheit, Max Levchin, Aaron Levie, and Ashton Kutcher.[3] MemSQL Inc. launched its database to the public on June 18, 2012.[4]

Core Technology[edit]

MemSQL combines lock-free data structures and a just-in-time (JIT) compiler for processing highly volatile workloads.[5] More specifically, MemSQL implements lock-free hash tables and lock-free skiplists in memory for fast random access to data. Queries sent to the MemSQL server are converted into C++ and compiled through GCC.[6] Queries are stripped of their parameters and the query template is stored as a shared object which is subsequently matched against incoming queries to the system. Code generation and the execution of pre-compiled query plans removes interpretation along hot code paths, providing highly efficient code paths that minimize the number of CPU instructions required.

MemSQL is wire-compatible with MySQL.[7] Applications can connect to MemSQL through standard ODBC/JDBC connectors as well as MySQL clients and drivers.[8]


Even though MemSQL stores data in memory, MemSQL is durable by implementing a write-ahead log and snapshots (similar to checkpoints). On default settings, as soon as a transaction is acknowledged in memory, the database will write the transaction to disk as fast as the disk will allow.[9]


MemSQL supports a native replication protocol that ships its transactional log to slaves. MemSQL currently supports master-slave replication.

Distributed Architecture[edit]

MemSQL is a distributed database that works by the concept of aggegators and leaf nodes.[10] An aggregator is responsible for breaking up the query across the relevant leaf nodes and aggregating results back to the client. A leaf node is a MemSQL database. MemSQL uses hash partitioning to distribute data uniformly across the number of leaf nodes.[11] MemSQL made the distributed version of its system generally available on April 23, 2013[12] with a trial edition available for download on their website.[13]

Version History[edit]

MemSQL 1b - first general availability in June, 2012.[14]
MemSQL 1c - minor feature update, released July 2012.
MemSQL 1.8 - replication and expanded SQL surface area, released December 2012
MemSQL 2.0 - general availability of distributed system.[15] First release of MemSQL Watch operational dashboard.[16]
MemSQL 2.5 - JSON Data type[17]
MemSQL 3.0 - Columnar data store [18]


External links[edit]