All versions of MySQL (not Microsoft SQL Server). Please also add a version-specific tag like mysql-5.7 if that is relevant to the question.
MySQL is a relational database management system (RDBMS) that runs as a server providing multi-user access to a number of databases. MySQL is officially pronounced /maɪˌɛskjuːˈɛl/ ("My S-Q-L"), but is often pronounced /maɪˈsiːkwəl/ ("My Sequel"). It is named for My, the daughter of Michael Widenius (the original developer of MySQL)
The MySQL development project has made its source code available under the terms of the GNU General Public License, as well as under a variety of proprietary agreements. MySQL was originally owned and sponsored by a single for-profit firm, the Swedish company MySQL AB.
MySQL has changed ownership a few times over the years. Sun purchased MySQL in January 2008 for $1B. Some 15 months later, before the ink could fully dry, Oracle buys Sun. This made MySQL a subsidiary of Oracle Corporation.
Ever since Oracle has stepped into the picture, they have made good on their promises to make steady strides in MySQL development, which have come to fruition heretofore by means of better performance and configurability. However, older bugs still exist in MySQL. Oracle has not taken up the cause to fix these older bugs fast enough.
In light of this and in keeping with the spirit of open source liberty and freedom, forks of MySQL have propelled in the OpenSource DB World as viable alternatives:
These two are very active and highly regarded.
The two forks/trees/branches below must now be considered defunct.
- Linux (Redhat Enterprise, Oracle Enterprise, Generic, Linux6 as for 5.5.17)
- Sun Solaris
- Free BSD
- Microsoft Windows
- InnoDB (default as of MySQL 5.5)
- MyISAM (default prior to MySQL 5.5)
- ARCHIVE (INSERT/SELECT only Engine for Raw Data; No Indexes)
- BLACKHOLE (/dev/null Storage Engine)
- CSV (CSV File That is SQL Accessible)
- MEMORY (Memory-Based Hash-Indexed Tables (BTREE Indexes Optional))
- MERGE (MRG_MYISAM) (Colletive Mapping of Multiple MyISAM Tables)
- MyISAM, InnoDB, CSV table access via Remote Connection
- MyISAM table access via Remote Connection (before MySQL 5.1)
- NDB (Network Database Storage Engine for MySQL Cluster)
Each Storage Engine has Distinct Properties that make efficient usage of data depending on
- Read Performance
- Write Performance
- Storage Requirements
- Memory Utilization
- Tuning the Engine Settings for
- Internal Use
- Multiple CPUs
- OS Usage
For example, InnoDB has undergone a facelift which now allows it to take advantage of multiple CPU architectures. It was first introduced in MySQL 5.1.38 InnoDB Plugin. Those changes have now been fully incorporated in MySQL 5.5's InnoDB (Note: Percona Server already had these enhancements in 5.0 and 5.1. Oracle is nicely catching up). The necessary options have default settings that must be tuned to engage multicore activity.
Other third party storage engines have been used in MySQL including: