MySQL is a multithreaded, multi-user SQL database management system (DBMS)[1] which has, according to MySQL AB, more than 10 million installations.[2]
MySQL is owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, which holds the copyright to most of the codebase. This is similar to the JBoss model and how the Free Software Foundation handles copyright in its projects, and dissimilar to how the Apache project does it, where the software is developed by a public community and the copyright to the codebase is owned by its individual authors.
The company develops and maintains the system, selling support and service contracts, as well as proprietary-licensed copies of MySQL, and employing people all over the world who collaborate via the Internet. MySQL AB was founded by David Axmark, Allan Larsson, and Michael "Monty" Widenius. The CEO is Mårten Mickos.
The MySQL company also sells another DBMS, MaxDB, which is from an unrelated codebase.
Platforms
MySQL works on many different platforms—including AIX, BSDi, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, OS/2 Warp, QNX, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows ME, Windows NT, Windows 2000, Windows XP and Windows Vista. A port of MySQL to OpenVMS is also available.
The latest production version
As of October 2006, MySQL offers MySQL 5.0 in two different variants: the MySQL Community Server and Enterprise Server. Both have a common code base and include the following features:
* A broad subset of ANSI SQL 99, as well as extensions
* Cross-platform support
* Stored procedures
* Triggers
* Cursors
* Updatable Views
* True VARCHAR support
* INFORMATION_SCHEMA
* Strict mode
* X/Open XA distributed transaction processing (DTP) support; two phase commit as part of this, using Oracle's InnoDB engine
* Independent storage engines (MyISAM for read speed, InnoDB for transactions and referential integrity, Archive for storing historical data in little space)
* Transactions with the InnoDB, BDB and Cluster storage engines; savepoints with InnoDB
* SSL support
* Query caching
* Sub-SELECTs (i.e. nested SELECTs)
* Replication with one master per slave, many slaves per master, no automatic support for multiple masters per slave.
* Full-text indexing and searching using MyISAM engine
* Embedded database library
* Partial Unicode support (UTF-8 sequences longer than 3 bytes are not supported; UCS-2 encoded strings are also limited to the BMP)
* ACID compliance using the InnoDB, BDB and Cluster engines
* Shared-nothing clustering through MySQL Cluster
The MySQL Enterprise Server is released once per month, but the binaries are not publicly available from the download pages. The sources can be obtained under the GPL from MySQL's FTP server[1] and all patches for bug fixes are immediately available from the public MySQL BitKeeper repositories. The MySQL Community Server is published on an unspecified schedule under the GPL and contains all bug fixes that were shipped with the last MySQL Enterprise Server release. Binaries are no longer provided for every release of the Community Server.
Future releases
The MySQL 5.1 roadmap outlines support for:
* Partitioning
* Online backup for all storage engines
* Fail-safe replication
* Column-level constraints
* Event Scheduling
* XML functions
Support for parallelization is also part of the roadmap for future versions.[6]
Foreign key support for all storage engines will likely be released with MySQL 5.2 (although it has been present since version 3.23.44 for InnoDB).
The current MySQL 5.1 development release is 5.1.20 beta
A new storage engine is also in the works, called Falcon. A preview of Falcon is available in MySQL 6.0 Alpha
Distinguishing features
The following features are implemented by MySQL but not by some other RDBMSes:
* Multiple storage engines, allowing you to choose the one which is most effective for each table in the application (in MySQL 5.0, storage engines must be compiled in; in MySQL 5.1, storage engines can be dynamically loaded at run time):
o Native storage engines (MyISAM, Falcon, Merge, Memory (heap), Federated, Archive, CSV, Blackhole, Cluster)
o Partner-developed storage engines (InnoDB, solidDB, NitroEDB, BrightHouse)
o Community-developed storage engines
o Custom storage engines
* Commit grouping, gathering multiple transactions from multiple connections together to increase the number of commits per second.
Server compilation type
There are 3 types of MySQL Server Compilations:
* Standard: The MySQL-Standard binaries are recommended for most users, and include the InnoDB storage engine.
* Max: (not MaxDB, which is a cooperation with SAP AG) is MySQLd-max Extended MySQL Server. The MySQL-Max binaries include additional features that may not have been as extensively tested or are not required for general usage.
* The MySQL-Debug binaries have been compiled with extra debug information, and are not intended for production use, because the included debugging code may cause reduced performance.
Beginning with MySQL 5.1, MySQL AB has stopped providing three different package variants. There will only be one MySQL server package, which includes a MySQLd binary with all functionality and storage engines enabled. Instead of providing a separate debug package, a server binary with extended debugging information is also included in the standard package
Source code specifics
MySQL is written in C and C++. The SQL parser uses yacc and home-brewed lexer. A document describing some of the internal structures of the code and the coding guidelines is available from the MySQL web site
|