MySQL
ARTICLE SUBJECTS
being →
database →
ethics →
fiction →
history →
internet →
language →
linux →
logic →
method →
news →
policy →
purpose →
religion →
science →
software →
truth →
unix →
wiki →
ARTICLE TYPES
essay →
feed →
help →
system →
wiki →
ARTICLE ORIGINS
critical →
forked →
imported →
original →
index
MySQL
MySQL (pronounced {{IPA|/m?? ?s kju? ?l/}}) 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.
To administer MySQL databases one can use the included command-line tool (commands:
In addition to the above mentioned tools developed by MySQL AB, there are several other commercial and non-commercial tools available. PhpMyAdmin is a free software webbased administration interface implemented in PHP.
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 license from MySQL’s FTP server ftp.mysql.com/pub/mysql/src/ 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 license 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.[4][5]
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.16 beta
A new storage engine is also in the works, called Falcon. A preview of Falcon is available in MySQL 5.2 Alpha.
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.[6]
Members of the MySQL Network enjoy access to binaries and software that is certified for their particular operating system, and the codebase changes much less frequently than the Community Edition of the MySQL Database Server engine. The Network maintains several levels of membership based on importance and urgency for response times.
Both the MySQL server software itself and the client libraries are distributed under a dual-licensing format. Users may choose the GNU General Public License www.mysql.com/products/licensing/opensource-license.html , which MySQL has extended with a FLOSS License Exception. It allows Software licensed under other OSI-compliant Open Source licenses, which are not compatible to the GPL, to link against the MySQL client libraries. www.mysql.com/company/legal/licensing/foss-exception.html
Customers that do not wish to be bound to the terms of the GPL may choose to purchase a proprietary_license. www.mysql.com/company/legal/licensing/commercial-license.html
Like_many_open-source_programs, the name “MySQL” is trademarked and may only be used with the trademark holder’s permission.
Some users have independently continued to develop earlier versions of the client libraries, which was distributed under the less-restrictive Lesser General Public License. packages.debian.org/libmysqlclient10
The “My” portion of the name supposedly comes from the name of Widenius’s child dev.mysql.com/doc/refman/5.0/en/history.html , spelled “My” but pronounced in the local language as mü {{IPA|/my/}} (or approximately in English, “me”).
The “SQL” portion uses the fully spelled-out pronunciation of the initials, S-Q-L (Structured Query Language), not the “sequel” pronunciation. This adheres to the official ANSI pronunciation but conflicts with the earlier IBM database of that name. www.faqs.org/docs/ppbook/c1164.htm
The Swedish (MySQL AB is a Swedish company) word Myskväll (“cozy evening”, or “My’s evening” as Mys kväll) is pronounced in a similar way, but this may be a coincidence. Nevertheless this pronunciation is quite usual in Sweden.
Another criticism is MySQL’s divergence from the SQL standard on the subject of treatment of NULL values and default values. Its handling of dates allows storing a date with a day beyond the last day of a month with less than 31 days, and arithmetic operations are vulnerable to either integer overflow or floating point truncation.[10] Since version 5 of the server, the treatment of illegal values varies according to use of the “SQL Mode” set in the server, which is by default set to the unusually tolerant state that critics dislike.[11]
Earlier versions of the MySQL manual claimed that certain aspects of relational integrity checking and transactions that are common in most relational databases and yet missing in MySQL, were useless or even harmful, and that users were better off without them. Such statements drew the ire of SQL experts and MySQL today allows some support for previously-dismissed features.
When the beta version of MySQL 5.0 was released in March 2005, David Axmark, a co-founder of MySQL, said that “People have been criticizing MySQL since we started for not having stored procedures, triggers and views,” and “We’re fixing 10 years of criticism in one release.“[12] MySQL 5.0’s 13 October build 5.0.15 was released for production use on 24 October 2005, after more than two million downloads in the 5.0 beta cycle. MySQL version 5.0, however, does not currently guarantee ACID consistency in the case of a crash when some kinds of stored procedures or functions are used to modify the database.[13]
In September 2005, MySQL AB and SCO forged a partnership for “joint certification, marketing, sales, training and business development work for a commercial version of the database for SCO’s new OpenServer 6 version of Unix”. SCO_raised_controversy beginning in 2003 with a number of high-profile patent lawsuits related to the Linux Operating System. Various MySQL employees expressed that the company was committed to serving its end users, regardless of their operating system choice, that the company would leave it to the courts to resolve the SCO licensing controversy, and that other common open source databases have also been ported to, and support, SCO OpenServer.
In October 2005, Oracle Corporation acquired Innobase OY, the Finnish company that developed the InnoDB storage engine that allows MySQL to provide such functionality as transactions and foreign keys. A press release by Oracle that was issued after the acquisition mentioned that the contracts that make the company’s software available to MySQL AB come up for renewal (and presumably renegotiation) some time in 2006. During the MySQL Users Conference in April 2006, MySQL issued a press release which confirmed that MySQL and Innobase OY agreed to a multi-year extension of their licensing agreement.[15]
In February 2006, Oracle Corporation acquired Sleepycat Software,[16] makers of the Berkeley DB, a database engine onto which another MySQL storage engine was built.
Some content adapted from the Pseudopedia article “MySQL” under the GNU Free Documentation License.
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.
Programming Languages
Libraries for accessing MySQL databases are available in all major programming languages with language-specific APIs. In addition, an ODBC interface called MyODBC allows additional programming languages that support the ODBC interface to communicate with a MySQL database, such as ASP or Coldfusion. The MySQL server and official libraries are mostly implemented in ANSI C.Uses
MySQL is popular for web applications and acts as the database component of the LAMP,_MAMP,_and_WAMP platforms (Linux/Mac/Windows-Apache-MySQL-PHP/Perl/Python), and for open-source bug tracking tools like Bugzilla. Its popularity as a web application is closely tied to the popularity of PHP, which is often combined with MySQL and nicknamed the Dynamic Duo. It is easy to find many references that combine the two in websites and books (PHP and MySQL for Dummies, PHP and MySQL Bible, Beginning PHP and MySQL, etc.). PHP and MySQL are essential components for running the popular WordPress blogging platform. GetWiki runs on GetWiki software, and along with SOHOdb, also uses PHP and a MySQL database.Documentation & Administration
Information on using MySQL can be found on the company’s site, under their Documentation section. There are also many books written about MySQL.To administer MySQL databases one can use the included command-line tool (commands:
mysql
and mysqladmin
). Also downloadable from the MySQL site are GUI administration tools: MySQL Administrator and MySQL Query Browser. Both of the GUI tools are now included in one package called MySQL GUI Tools.
In addition to the above mentioned tools developed by MySQL AB, there are several other commercial and non-commercial tools available. PhpMyAdmin is a free software webbased administration interface implemented in PHP.
Program Specifications
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.[3]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 license from MySQL’s FTP server ftp.mysql.com/pub/mysql/src/ 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 license 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.[4][5]
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
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.16 beta
A new storage engine is also in the works, called Falcon. A preview of Falcon is available in MySQL 5.2 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):
- Native storage engines (MyISAM, Falcon, Merge, Memory (heap), Federated, Archive, CSV, Blackhole, Cluster)
- Partner-developed storage engines (InnoDB, solidDB, NitroEDB, BrightHouse)
- Community-developed storage engines
- Custom storage engines
- Commit grouping, gathering multiple transactions from multiple connections together to increase the number of commits per second.
Server Compilation
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) 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.[6]
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[7]Support
Via MySQL Network MySQL AB offers support itself, including 24/7 30-minute response time, with the support team having direct access to the developers as necessary to handle problems. In addition it hosts forums and mailing lists and employees and other users are often available in several IRC channels providing assistance.Members of the MySQL Network enjoy access to binaries and software that is certified for their particular operating system, and the codebase changes much less frequently than the Community Edition of the MySQL Database Server engine. The Network maintains several levels of membership based on importance and urgency for response times.
Licensing
MySQL AB makes MySQL Server available as free software under the GNU General Public License (GPL), but they also offer the MySQL Enterprise subscription offering for business users and dual-license it under traditional proprietary licensing arrangements for cases where the intended use is incompatible with the GPL.Both the MySQL server software itself and the client libraries are distributed under a dual-licensing format. Users may choose the GNU General Public License www.mysql.com/products/licensing/opensource-license.html , which MySQL has extended with a FLOSS License Exception. It allows Software licensed under other OSI-compliant Open Source licenses, which are not compatible to the GPL, to link against the MySQL client libraries. www.mysql.com/company/legal/licensing/foss-exception.html
Customers that do not wish to be bound to the terms of the GPL may choose to purchase a proprietary_license. www.mysql.com/company/legal/licensing/commercial-license.html
Like_many_open-source_programs, the name “MySQL” is trademarked and may only be used with the trademark holder’s permission.
Some users have independently continued to develop earlier versions of the client libraries, which was distributed under the less-restrictive Lesser General Public License. packages.debian.org/libmysqlclient10
Pronunciation
“MySQL“’s manual gives the official pronunciation of the name as “My Ess Que Ell”,[8] pronounced as {{IPA|/ma? ?s kju? ?l/}}, not “My sequel” {{IPA|/ma? si?kw?l/}}. However, the company does not take issue with the pronunciation “My sequel” or other local variations.The “My” portion of the name supposedly comes from the name of Widenius’s child dev.mysql.com/doc/refman/5.0/en/history.html , spelled “My” but pronounced in the local language as mü {{IPA|/my/}} (or approximately in English, “me”).
The “SQL” portion uses the fully spelled-out pronunciation of the initials, S-Q-L (Structured Query Language), not the “sequel” pronunciation. This adheres to the official ANSI pronunciation but conflicts with the earlier IBM database of that name. www.faqs.org/docs/ppbook/c1164.htm
The Swedish (MySQL AB is a Swedish company) word Myskväll (“cozy evening”, or “My’s evening” as Mys kväll) is pronounced in a similar way, but this may be a coincidence. Nevertheless this pronunciation is quite usual in Sweden.
Criticisms of MySQL
Early versions of MySQL lacked many standard relational database management system (RDBMS) features, usually with the goal of trading guaranteed accuracy for speed. Many (but not yet all) such criticisms have been remedied in later versions of the software, including transactions and relational integrity constraintsâfeatures necessary to support “ACID_properties” for relational databases, which allow the DBMS to ensure that client applications cannot interfere with one another or insert inconsistent values.[9]Another criticism is MySQL’s divergence from the SQL standard on the subject of treatment of NULL values and default values. Its handling of dates allows storing a date with a day beyond the last day of a month with less than 31 days, and arithmetic operations are vulnerable to either integer overflow or floating point truncation.[10] Since version 5 of the server, the treatment of illegal values varies according to use of the “SQL Mode” set in the server, which is by default set to the unusually tolerant state that critics dislike.[11]
Earlier versions of the MySQL manual claimed that certain aspects of relational integrity checking and transactions that are common in most relational databases and yet missing in MySQL, were useless or even harmful, and that users were better off without them. Such statements drew the ire of SQL experts and MySQL today allows some support for previously-dismissed features.
When the beta version of MySQL 5.0 was released in March 2005, David Axmark, a co-founder of MySQL, said that “People have been criticizing MySQL since we started for not having stored procedures, triggers and views,” and “We’re fixing 10 years of criticism in one release.“[12] MySQL 5.0’s 13 October build 5.0.15 was released for production use on 24 October 2005, after more than two million downloads in the 5.0 beta cycle. MySQL version 5.0, however, does not currently guarantee ACID consistency in the case of a crash when some kinds of stored procedures or functions are used to modify the database.[13]
License Issues
Some users have also criticized MySQL AB’s position on the licensing of the software. Further, there was some controversy regarding the distribution of GPLed MySQL library files with other open source applications. The biggest controversy arose with PHP, which has a license incompatible with the GPL. This was later resolved when MySQL created a license exception that explicitly allows the inclusion of the MySQL client library in open source projects that are licensed under a number of OSI-compliant Open Source licenses, including the PHP license.[14]In September 2005, MySQL AB and SCO forged a partnership for “joint certification, marketing, sales, training and business development work for a commercial version of the database for SCO’s new OpenServer 6 version of Unix”. SCO_raised_controversy beginning in 2003 with a number of high-profile patent lawsuits related to the Linux Operating System. Various MySQL employees expressed that the company was committed to serving its end users, regardless of their operating system choice, that the company would leave it to the courts to resolve the SCO licensing controversy, and that other common open source databases have also been ported to, and support, SCO OpenServer.
In October 2005, Oracle Corporation acquired Innobase OY, the Finnish company that developed the InnoDB storage engine that allows MySQL to provide such functionality as transactions and foreign keys. A press release by Oracle that was issued after the acquisition mentioned that the contracts that make the company’s software available to MySQL AB come up for renewal (and presumably renegotiation) some time in 2006. During the MySQL Users Conference in April 2006, MySQL issued a press release which confirmed that MySQL and Innobase OY agreed to a multi-year extension of their licensing agreement.[15]
In February 2006, Oracle Corporation acquired Sleepycat Software,[16] makers of the Berkeley DB, a database engine onto which another MySQL storage engine was built.
Trivia
- The dolphin symbol in the MySQL logo was given the Swati name in October 2002 after a naming contest. www.mysql.com/news-and-events/news/article_116.html
- MySQL was originally developed on Solaris Operating System.
History
- MySQL was first released internally on May 23, 1995
- Windows version released on January 8, 1998 for Windows 95 and NT
- Version 3.23: beta from June 2000, production release January 2001
- Version 4.0: beta from August 2002, production release March 2003 (unions)
- Version 4.1: beta from June 2004, production release October 2004 (r-trees, subqueries)
- Version 5.0: beta from March 2005, production release October 2005 (cursors, stored procedures, triggers, views, XA transactions)
- Version 5.1: currently pre-production (since November 2005) (event scheduler, partitioning, plugin API, row-based replication, server log tables)
- Version 5.2 will include foreign key support for all storage engines (at the moment only InnoDB supports this)
Selected Examples
- Apple - for dynamic pages on Apple.com, also many in-house projects
- Amazon.com - for many in-house projects
- Cox Communications - the fourth largest cable-television provider in the United States, has more than 3,600 tables and two billion rows of data in their databases and handles approximately two million inserts every hour
- Craigslist - Popular listings site
- Digg - Popular news site
- GameFAQs - popular gaming site, more than 2000 users online at any point of the day
- GetWiki - a wiki engine based on XML and classification standards
- Google - for the search engine’s AdWords program
- Gumtree - the UK’s biggest classifieds site
- LiveJournal - around 300 million page views per day
- NASA - converted an Oracle-based acquisition system to MySQL www.mysql.com/news-and-events/news/article_51.html
- Omniture
- RightNow
- Sabre, and its travel reservation system Travelocity www.mysql.com/why-mysql/case-studies/mysql-sabre-casestudy.pdf
- Slashdot - with around 150 million page views per day
- SOHOdb - a simple enterprise database system
- WordPress - MySQL is the backbone that makes WordPress possible
- Xfire - used to store its Xfire user data media.xfire.com/xfire/technotes.html
- Yahoo! - for many mission-critical applications
2006 MySQL Application of the Year
- Nokia, using MySQL Cluster to maintain real-time information about mobile network users.
- flickr, Using MySQL to manage millions of photos and users. www.mysql.com/why-mysql/awards/app-of-the-year-2006.html
- NetQOS, embeds MySQL to manage the world’s largest networks including Chevron, American Express and Boeing.
2005 MySQL Application of the Year
- CNET_Networks
- Friendster, more than 85 million dynamic page views per day, able to support more than 1.5 billion MySQL queries per day
- Pseudopedia, more than 200 million queries and 1.2 million updates per day with peak loads of 11,000 queries per second
See Also
- MySQL Cluster
- LAMP/WAMP
- MaxDB, another database marketed by MySQL AB
- PostgreSQL
- Firebird
- Comparison of relational database management systems
- HeidiSQL is a free, open source client for MySQL
- MySQL Workbench is database modeling tool for MySQL
References
- WEB, Robin Schumacher, Arjen Lentz, Dispelling the Myths, MySQL AB, dev.mysql.com/tech-resources/articles/dispelling-the-myths.html, 2007-02-10,
- WEB, Why MySQL?, MySQL AB, www.mysql.com/why-mysql/, 2007-02-10,
- PCSI Kits of Open Source Software for OpenVMS
- Peter Zaitsev’s blog
- Kaj Arnö’s reply
- MySQL Max Build Policy
- MySQL Internals Manual
- WEB, What is MySQL?, MySQL 5.0 Reference Manual, MySQL AB, dev.mysql.com/doc/refman/5.0/en/what-is-mysql.html, 2007-02-10,
- www.service-architecture.com/database/articles/acid_properties.html ACID properties
- sql-info.de/mysql/gotchas.html mySQL Gotchas
- dev.mysql.com/doc/mysql/en/server-sql-mode.html SQL Modes
- news.zdnet.co.uk/software/applications/0,39020384,39192964,00.htm ‘Most important ever’ MySQL reaches beta
- dev.mysql.com/doc/refman/5.0/en/stored-procedure-logging.html Binary Logging of Stored Routines and Triggers
- www.mysql.com/company/legal/licensing/opensource-license.html MySQL Open Source License
- www.mysql.com/news-and-events/press-release/release_2006_21.html MySQL to Promote New Open Source DB Engines from its Partners and Dev Community
- www.informationweek.com/software/showArticle.jhtml?articleID=180200853 Oracle Buys Sleepycat, Is JBoss Next?
External Links
Documentation
- MySQL Manual
- MySQL_Books
- MySQL Roadmap
- MySQL Gotchas description of many features in MySQL, which work as advertised, but not as those used to other databases may expect
Some content adapted from the Pseudopedia article “MySQL” under the GNU Free Documentation License.