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 changes ownership hands over the last 4 years. Sun purchased MySQL in Janaury 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 spirit of open source liberty and freedom, forks of MySQL have propelled in the OpenSource DB World as viable alternatives:
- Linux (Redhat Enterprise, Oracle Enterprise, Generic, Linux6 as for 5.5.17)
- Sun Solaris
- Mac OS X
- Free BSD
- Microsoft Windows
- Source Code
- 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 enhancemments 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: