Jump to content

MySQL: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Blanked the page
m Reverted edits by 199.244.214.30 to last version by 16x9 (HG)
Line 1: Line 1:
{{ infobox software
| logo = [[Image:MySQL.svg|180px]]
| screenshot = [[Image:Mysql-screenshot.PNG|300px]]
| caption = Screenshot of the default MySQL command line.
| developer = [[MySQL AB]]
| released = {{initial release|1995|05|23}}
| frequently updated = yes
| programming language = [[C (programming language)|C]], [[C++]]
| operating system = [[Cross-platform]]
| language = English
| genre = [[Relational database management system| RDBMS]]
| license = [[GNU General Public License]] (version 2) or proprietary [[EULA]]
| website = http://www.mysql.com/
}}
'''MySQL''' is a [[relational database management system]] (RDBMS)<ref>{{cite web |author=Robin Schumacher, Arjen Lentz |title=Dispelling the Myths |publisher=[[MySQL AB]] |url=http://dev.mysql.com/tech-resources/articles/dispelling-the-myths.html |accessdate=2007-02-10 }}</ref> which has more than 11 million installations.<ref name=sun-mysql>Charles Babcock {{cite web |title=Sun Locks Up MySQL, Looks To Future Web Development |publisher=[[InformationWeek]] |url=http://www.informationweek.com/news/showArticle.jhtml?articleID=206900327 |accessdate=2008-02-27 }}</ref> The program runs as a server providing multi-user access to a number of databases. <!-- another para needed: needs discussion of db features, as well as real-world usage to establish notability -->

MySQL is owned and sponsored by a single [[Business|for-profit]] firm, the [[Sweden|Swedish]] company [[MySQL AB]], now a [[subsidiary]] of [[Sun Microsystems]],<ref name="sunacquire">[http://www.sun.com/aboutsun/pr/2008-02/sunflash.20080226.1.xml ''Sun Microsystems Announces Completion of MySQL Acquisition; Paves Way for Secure, Open Source Platform to Power the Network Economy''], Sun Microsystems Press release, [[February 26]], [[2008]]</ref> which holds the copyright to most of the codebase. The project's [[source code]] is available under terms of the [[GNU General Public License]], as well as under a variety of [[proprietary software|proprietary]] agreements.

"MySQL" is officially {{pronEng|maɪˌɛskjuːˈɛl}}<ref>{{cite web |title=What is MySQL?, MySQL 5.0 Reference Manual |publisher=[[MySQL AB]] |url=http://dev.mysql.com/doc/refman/5.0/en/what-is-mysql.html |accessdate=2007-02-10 }}</ref> (My S Q L), not "My sequel" {{IPA|/maɪˈsiːkwəl/}}. This adheres to the official ANSI pronunciation; [[SEQUEL]] was an earlier IBM [[Query language|database language]], a predecessor to the [[SQL]] language.<ref>{{cite web|title=Understand SQL|publisher=www.faqs.org/docs/|url=http://www.faqs.org/docs/ppbook/c1164.htm}}</ref> The company does not take issue with the pronunciation "My sequel" or other local variations.{{Fact|date=September 2008}}

== Uses ==
MySQL is popular for [[web application]]s and acts as the database component of the [[LAMP (software bundle)|LAMP, BAMP, MAMP, and WAMP]] platforms (Linux/BSD/Mac/Windows-Apache-MySQL-PHP/Perl/Python), and for [[Open source|open-source]] [[Bugtracker|bug tracking]] tools like [[Bugzilla]]. Its popularity for use with web applications is closely tied to the popularity of [[PHP]] and [[Ruby on Rails]], which are often combined with MySQL. [[Wikipedia]] runs on [[MediaWiki]] software, which is written in PHP and uses a MySQL database. Several high-traffic web sites use MySQL for its data storage and logging of user data, including [[Flickr]], [[Facebook]],<ref>{{cite web | url= http://blog.facebook.com/blog.php?post=7899307130 | work= Facebook Blog | title= Keeping Up | last= Sobel | first= Jason | date= 21 December 2007 | accessdate= 2008-10-30}}</ref><ref>{{cite web | url= http://gigaom.com/2008/04/25/facebooks-insatiable-hunger-for-hardware/ | publisher= [[GigaOM]] | title= Facebook’s Insatiable Hunger for Hardware | last=Malik | first=Om | date= 25 April 2008 | accessdate= 2008-10-30}}</ref>
[[Wikipedia]], [[Google]],<ref>{{cite news | url= http://www.informationweek.com/news/internet/showArticle.jhtml?articleID=199201237 | publisher= Information Week | date= 24 April 2007 | last= Claburn | first= Thomas | title= Google Releases Improved MySQL Code | accessdate= 2008-11-30}}</ref>
[[Nokia]] and [[YouTube]].

== Platforms and interfaces ==
[[Image:MySQLadministrator1.jpg|thumb|right|The MySQL Administrator in Linux.]]

MySQL is written in [[C (programming language)|C]] and [[C++]]. The SQL parser uses [[yacc]] and a home-brewed [[Lex programming tool|lexer]].<ref>[http://dev.mysql.com/doc/internals/en/index.html MySQL Internals Manual]</ref>

MySQL works on many different [[system platform]]s, including [[AIX operating system|AIX]], [[BSD/OS|BSDi]], [[FreeBSD]], [[HP-UX]], [[IBM i5/OS|i5/OS]], [[Linux]], [[Mac OS X]], [[NetBSD]], [[Novell NetWare]], [[OpenBSD]], [[eComStation]] , [[OS/2]] Warp, [[QNX]], [[IRIX]], [[Solaris (operating system)|Solaris]], [[Symbian]], [[SunOS]], [[SCO OpenServer]], [[UnixWare|SCO UnixWare]], [[Sanos]], [[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.<ref>[http://www.pi-net.dyndns.org/anonymous/kits/ PCSI Kits of Open Source Software for OpenVMS]</ref>

[[library (computing)|Libraries]] for accessing MySQL databases are available in all major [[programming language]]s with language-specific [[application programming interface|API]]s. In addition, an [[ODBC]] interface called [[MyODBC]] allows additional programming languages that support the [[ODBC]] interface to communicate with a MySQL database, such as [[Active Server Pages|ASP]] or [[Adobe ColdFusion|ColdFusion]]. The MySQL server and official libraries are mostly implemented in [[ANSI C]]/[[ANSI C++]].

To administer MySQL databases one can use the included [[Command line|command-line]] tool (commands: <code>mysql</code> and <code>mysqladmin</code>). Also downloadable from the MySQL site are [[Graphical user interface|GUI]] administration tools: ''[[MySQL Administrator]]'' and ''[[MySQL Query Browser]]''. Both of the GUI tools are now included in one package called ''tools/5.0.html MySQL GUI Tools''.

In addition to the above-mentioned tools developed by MySQL AB, there are several other commercial and [[non-commercial]] tools available. Examples include [[phpMyAdmin]], a free [[World Wide Web|Web]]-based administration interface implemented in [[PHP]], and [[Navicat]] Lite Edition, a free desktop based GUI tool.

== Features ==
{{Prose|section|date=October 2008}}
{{As of|2007|8}}, MySQL offers MySQL 5.0 in two different variants: the MySQL Community Server and [[MySQL Enterprise|Enterprise Server]]. They 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 procedure]]s
* [[Database trigger|Trigger]]s
* [[Cursor (databases)|Cursor]]s
* Updatable [[View (database)|View]]s
* True VARCHAR support
* INFORMATION_SCHEMA
* Strict mode
* [[X/Open XA]] [[distributed transaction processing]] (DTP) support; [[Two-phase-commit protocol|two phase commit]] as part of this, using Oracle's [[InnoDB]] engine
* Independent [[storage engine]]s ([[MyISAM]] for read speed, InnoDB for transactions and [[referential integrity]], [[MySQL Archive]] for storing historical data in little space)
* Transactions with the InnoDB, BDB and Cluster storage engines; savepoints with InnoDB
* [[Secure Sockets Layer|SSL]] support
* Query [[caching]]
* Sub-[[Select (SQL)|SELECT]]s (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; [[UTF-16/UCS-2|UCS-2]] encoded strings are also limited to the [[Basic Multilingual Plane|BMP]])
* [[ACID]] compliance using the InnoDB, [[Berkeley DB|BDB]] and Cluster engines
* Shared-nothing clustering through [[MySQL Cluster]]
The MySQL Enterprise Server is released once per month and the sources can be obtained either from MySQL's customer-only Enterprise site or from MySQL's [[Bazaar (software)|Bazaar]] repository, both under the GPL license. 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 by MySQL for every release of the Community Server.<ref>[http://www.mysqlperformanceblog.com/2006/12/29/where-to-get-recent-mysql-version/ Peter Zaitsev's blog]</ref><ref>[http://www.planetmysql.org/kaj/?p=82 Kaj Arnö's reply]</ref>
* Replication support (i.e. Master-Master Replication & Master-Slave Replication)

=== Distinguishing features ===
The following features are implemented by MySQL but not by some other [[RDBMS]] software:

* 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 (storage engine)|Falcon]], Merge, Memory (heap), [[MySQL Federated|Federated]], [[MySQL Archive|Archive]], [[Comma-separated values|CSV]], Blackhole, [[MySQL Cluster|Cluster]], [[Berkeley DB]], EXAMPLE, and [[Maria (storage engine)|Maria]])
* Partner-developed storage engines ([[InnoDB]], [[solidDB]], NitroEDB, BrightHouse)
* Community-developed storage engines ([[memcached]], [[Web server|httpd]], PBXT, Revision Engine)
* 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 for Enterprise and Community users:

* 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 these different package variants. There will only be one MySQL server package, which includes a <tt>mysqld</tt> 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.<ref>[http://www.planetmysql.org/kaj/?p=58 MySQL Max Build Policy]</ref>

== History ==
Milestones in MySQL development include:

* MySQL was first released internally on [[23 May]] [[1995]]
* Windows version was 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 ([[Union (SQL)|unions]])
* Version 4.1: beta from June 2004, production release October 2004 ([[R-tree]]s and [[B-tree]]s, subqueries, [[prepared statement]]s)
* Version 5.0: beta from March 2005, production release October 2005 ([[Cursor (databases)|cursors]], [[stored procedure]]s, [[Database trigger|triggers]], [[View (database)|views]], [[Database transaction|XA transactions]])

* Sun Microsystems acquired MySQL AB on [[26 February]] [[2008]].<ref name="sunacquire" />
* Version 5.1: production release [[November 27]] 2008 (event scheduler, [[Partition (database)|partitioning]], plugin API, row-based replication, [[server log]] tables)


=== Future releases ===
The MySQL 6 roadmap outlines support for:

* [[Foreign key |Foreign Key]]
* Additional [[Unicode]] characters utf16, utf32, and 4-byte utf8
* New transactional storage engine (Falcon).


Support for [[Parallel computing|parallelization]] is also part of the roadmap for future versions.<ref>[http://forums.mysql.com/read.php?106,78549,79006#msg-79006 Does MySQL support query parallelisation?]</ref>

Support for supplementary [[Unicode]] characters, beyond the 65536 characters of the [[Basic Multilingual Plane]] (BMP) is announced for MySQL 6.0.

[[Foreign key]] support for all storage engines is targeted for release in MySQL 6.1 (although it has been present since version 3.23.44 for [[InnoDB]]).

A new storage engine is also in the works, called [[Falcon (storage engine)|Falcon]]. A preview of Falcon is already available on MySQL's website.

== Support and licensing ==
Via MySQL Enterprise MySQL AB offers support itself, including a [[24/7]] service with 30-minute response time, the support team has [[direct access]] to the developers as necessary to handle problems. In addition it hosts forums and [[mailing list]]s, employees and other users are often available in several [[Internet Relay Chat|IRC channels]] providing assistance.

Buyers of MySQL Enterprise have access to binaries and software that is certified for their particular operating system, and access to monthly binary updates with the latest bug fixes. Several levels of Enterprise membership are available, with varying response times and features ranging from how to and emergency support through server [[performance tuning]] and [[Systems architecture|system architecture]] advice. The MySQL [[Network monitoring|Network Monitoring]] and Advisory Service monitoring tool for [[database server]]s is available only to MySQL Enterprise customers.

MySQL Server is available as [[free software]] under the [[GNU General Public License]] (GPL), and the [[MySQL Enterprise]] subscriptions include a GPL version of the server, with a traditional [[proprietary software|proprietary]] version available on request at no additional cost for cases where the intended use is incompatible with the GPL.<ref>{{ cite web | title = Must I purchase MySQL Enterprise under MySQL's Commercial License in order to receive support? | publisher = [[MySQL AB]] | url = http://www.mysql.com/about/legal/supportpolicies/policies-04.html }}</ref>

Both the MySQL server software itself and the client libraries are distributed under a [[dual license|dual-licensing]] format. Users may choose the GPL,<ref>[http://www.mysql.com/products/licensing/opensource-license.html MySQL AB :: MySQL Open Source License<!-- Bot generated title -->]</ref> which MySQL has extended with a [[Alternative terms for free software|FLOSS]] License Exception. It allows Software licensed under other [[Open Source Initiative|OSI]]-compliant [[Open-source license|Open Source licenses]], which are not compatible to the GPL, to link against the MySQL client libraries.<ref>[http://www.mysql.com/company/legal/licensing/foss-exception.html MySQL AB :: FLOSS License Exception<!-- Bot generated title -->]</ref>

Customers that do not wish to be bound to the terms of the GPL may choose to purchase a proprietary license.<ref>[http://www.mysql.com/company/legal/licensing/commercial-license.html MySQL AB :: MySQL Commercial License<!-- Bot generated title -->]</ref>

[[List of trademarked open source software|Like many open-source programs]], the name "MySQL" is [[trademark]]ed and may only be used [http://www.mysql.com/company/legal/trademark.html 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 [[GNU Lesser General Public License]] (LGPL).<ref>[http://packages.debian.org/libmysqlclient10 Debian - Package Search Results - libmysqlclient10<!-- Bot generated title -->]</ref>

=== Issues ===
There has been some controversy regarding the distribution of GPL licensed 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]].<ref>{{cite web|title=MySQL Open Source License|publisher=[[MySQL AB]]|url=http://www.mysql.com/company/legal/licensing/opensource-license.html}}</ref>

In September 2005, MySQL AB and [[SCO Group|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-Linux controversies|SCO raised controversy]] beginning in 2003 with a number of high-profile [[lawsuit]]s 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 [[Finland|Finnish]] company that developed the [[InnoDB]] storage engine that allows MySQL to provide such functionality as transactions and [[foreign key]]s.
A [[News release|press release]] by Oracle that was issued after the acquisition,<ref>
{{cite web
|title=Oracle Plans to Increase Support for Open Source Software
|publisher=Oracle and InnoDB
|url=http://www.oracle.com/innodb/index.html
}}</ref>
mentioned that the contracts that make the company's software available to [[MySQL AB]] would be due 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.<ref>
{{cite web
|title=MySQL to Promote New Open Source DB Engines from its Partners and Dev Community
|publisher=[[MySQL AB]]
|url=http://www.mysql.com/news-and-events/press-release/release_2006_21.html
}}</ref>

In February 2006, Oracle Corporation acquired [[Sleepycat Software]],<ref>{{cite web|title=Oracle Buys Sleepycat, Is JBoss Next?|publisher=Charles Babcock|url=http://www.informationweek.com/software/showArticle.jhtml?articleID=180200853}}</ref> makers of the [[Berkeley DB]], a database engine onto which another MySQL storage engine was built.

== Criticism ==
MySQL recently released version 5.1 with 20 known crashing and wrong result bugs in addition to the 35 present in version 5.0. <ref>http://www.planetmysql.org/entry.php?id=16232</ref>

Critical bugs sometimes do not get fixed for long periods of time. <ref>[http://it.toolbox.com/blogs/database-soup/whats-drizzle-26130 What's Drizzle?<!-- Bot generated title -->]</ref><ref>[http://monty-says.blogspot.com/2008/07/bugs-life.html Monty says: A bugs life<!-- Bot generated title -->]</ref> An example is a bug with status critical existing since 2003. <ref>{{cite web|title=If DROP TABLE while there's an active transaction, wrong binlog order|publisher=MySQL|url=http://bugs.mysql.com/bug.php?id=989}}</ref>

MySQL shows poor performance when used for [[Data Warehousing]]; this is partly due to inability to utilize multiple CPU cores for processing a single query. <ref>[http://www.mysqlperformanceblog.com/2008/04/10/tpc-h-run-on-mysql-51-and-60/ TPC-H Run on MySQL 5.1 and 6.0 | MySQL Performance Blog<!-- Bot generated title -->]</ref>

The developer of the Federated Storage Engine states that "The Federated Storage Engine is a proof-of-concept storage engine" [http://capttofu.livejournal.com/5798.html], though it was included and turned on by default in the main distributions of MySQL version 5.0. Some of the short-comings are documented in the "MySQL Federated Tables: The Missing Manual" [http://www.oreillynet.com/pub/a/databases/2006/08/10/mysql-federated-tables.html].

MySQL's divergence from the SQL standard regarding the treatment of NULL values and default values has been criticized. Its handling of dates in versions prior to 5.0 allows storing a date with a day beyond the last day of a month with fewer than 31 days, and arithmetic operations are vulnerable to either [[integer overflow]] or [[floating point]] truncation.<ref>http://sql-info.de/mysql/gotchas.html mySQL Gotchas</ref> 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.<ref>{{ cite web | title = MySQL 5.0 Reference Manual - 5.2.6 SQL Modes | publisher = [[MySQL AB]] | url = http://dev.mysql.com/doc/mysql/en/server-sql-mode.html }}</ref>

When the [[Development stage|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."<ref>{{cite web|title='Most important ever' MySQL reaches beta|publisher=Ingrid Marson|url=http://news.zdnet.co.uk/software/applications/0,39020384,39192964,00.htm}}</ref> 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.

== See also ==
{{portal|free software|Free Software Portal Logo.svg}}

* [[SQL]]
* [[Comparison of relational database management systems]]
* [[PostgreSQL]]
* [[HSQLDB]]
* [[Drizzle (database server)|Drizzle]]
* [[LAMP_(software_bundle)|LAMP]]

== References ==
{{reflist|2}}

== External links ==
{{Wikibooks}}
{{Commonscat}}
* [http://www.mysql.com/products/database/ MySQL database website]
* [http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL MySQL vs PostgreSQL]
* [http://www.sun.com/mysql MySQL site at Sun.com]
* [http://www.planetmysql.org Planet MySQL] - an aggregation of MySQL-related blogs
*[http://www.mysqltutorial.org/ MySQL tutorial]
* [http://sql-info.de/mysql/gotchas.html MySQL Gotchas] description of many features in MySQL 4.1 and earlier, which work as advertised, but not as those used to other databases may expect
* [http://databases.about.com/od/shareware/a/mysql.htm Introduction to MySQL]
* [http://blogs.sun.com./jonathan/date/20080116 Sun acquire MySQL AB]
* [http://uk.intruders.tv/MySQL-co-founder,-David-Axmark,-on-Sun-s-billion-dollar-acquisition_a291.html Interview with David Axmark, MySQL co-founder] Video
* [irc://irc.freenode.net/mysql #mysql] on freenode
* [http://www.qdecoder.org/goto/qDatabase.html qDecoder's C/C++ SQL wrapper implementation] &mdash; opensource library which supports MySQL database

{{Databases}}
{{Sun Microsystems}}

[[Category:1995 software]]
[[Category:Database management systems]]
[[Category:Open source database management systems]]
[[Category:Sun Microsystems software]]
[[Category:SQL]]
[[Category:Cross-platform software]]
[[Category:Launchpad projects]]

[[af:MySQL]]
[[ar:ماي إس كيو إل]]
[[az:MySQL]]
[[bs:MySQL]]
[[bg:MySQL]]
[[ca:MySQL]]
[[cs:MySQL]]
[[da:MySQL]]
[[de:MySQL]]
[[et:MySQL]]
[[es:MySQL]]
[[eo:MySQL]]
[[eu:MySQL]]
[[fa:مای‌اس‌کیوال]]
[[fr:MySQL]]
[[ga:MySQL]]
[[gl:MySQL]]
[[ko:MySQL]]
[[hr:MySQL]]
[[id:MySQL]]
[[it:MySQL]]
[[he:MySQL]]
[[ku:MySQL]]
[[lv:MySQL]]
[[lt:MySQL]]
[[hu:MySQL]]
[[mk:MySQL]]
[[ms:MySQL]]
[[nl:MySQL]]
[[ja:MySQL]]
[[no:MySQL]]
[[km:MySQL]]
[[pl:MySQL]]
[[pt:MySQL]]
[[ro:MySQL]]
[[ru:MySQL]]
[[simple:MySQL]]
[[sk:MySQL]]
[[sl:MySQL]]
[[sr:MySQL]]
[[fi:MySQL]]
[[sv:MySQL]]
[[th:MySQL]]
[[vi:MySQL]]
[[tr:MySQL]]
[[uk:MySQL]]
[[zh:MySQL]]

Revision as of 14:15, 15 December 2008

MySQL
Developer(s)MySQL AB
Initial releaseMay 23, 1995 (1995-05-23)
Repository
Written inC, C++
Operating systemCross-platform
Available inEnglish
Type RDBMS
LicenseGNU General Public License (version 2) or proprietary EULA
Websitehttp://www.mysql.com/

MySQL is a relational database management system (RDBMS)[1] which has more than 11 million installations.[2] The program runs as a server providing multi-user access to a number of databases.

MySQL is owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, now a subsidiary of Sun Microsystems,[3] which holds the copyright to most of the codebase. The project's source code is available under terms of the GNU General Public License, as well as under a variety of proprietary agreements.

"MySQL" is officially Template:PronEng[4] (My S Q L), not "My sequel" /maɪˈsiːkwəl/. This adheres to the official ANSI pronunciation; SEQUEL was an earlier IBM database language, a predecessor to the SQL language.[5] The company does not take issue with the pronunciation "My sequel" or other local variations.[citation needed]

Uses

MySQL is popular for web applications and acts as the database component of the LAMP, BAMP, MAMP, and WAMP platforms (Linux/BSD/Mac/Windows-Apache-MySQL-PHP/Perl/Python), and for open-source bug tracking tools like Bugzilla. Its popularity for use with web applications is closely tied to the popularity of PHP and Ruby on Rails, which are often combined with MySQL. Wikipedia runs on MediaWiki software, which is written in PHP and uses a MySQL database. Several high-traffic web sites use MySQL for its data storage and logging of user data, including Flickr, Facebook,[6][7] Wikipedia, Google,[8] Nokia and YouTube.

Platforms and interfaces

The MySQL Administrator in Linux.

MySQL is written in C and C++. The SQL parser uses yacc and a home-brewed lexer.[9]

MySQL works on many different system platforms, including AIX, BSDi, FreeBSD, HP-UX, i5/OS, Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, eComStation , OS/2 Warp, QNX, IRIX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, 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.[10]

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/ANSI C++.

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 tools/5.0.html MySQL GUI Tools.

In addition to the above-mentioned tools developed by MySQL AB, there are several other commercial and non-commercial tools available. Examples include phpMyAdmin, a free Web-based administration interface implemented in PHP, and Navicat Lite Edition, a free desktop based GUI tool.

Features

As of August 2007, MySQL offers MySQL 5.0 in two different variants: the MySQL Community Server and Enterprise Server. They have a common code base and include the following features:

The MySQL Enterprise Server is released once per month and the sources can be obtained either from MySQL's customer-only Enterprise site or from MySQL's Bazaar repository, both under the GPL license. 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 by MySQL for every release of the Community Server.[11][12]

  • Replication support (i.e. Master-Master Replication & Master-Slave Replication)

Distinguishing features

The following features are implemented by MySQL but not by some other RDBMS software:

  • 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, Berkeley DB, EXAMPLE, and Maria)
  • Partner-developed storage engines (InnoDB, solidDB, NitroEDB, BrightHouse)
  • Community-developed storage engines (memcached, httpd, PBXT, Revision Engine)
  • 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 for Enterprise and Community users:

  • 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 these 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.[13]

History

Milestones in MySQL development include:


Future releases

The MySQL 6 roadmap outlines support for:

  • Foreign Key
  • Additional Unicode characters utf16, utf32, and 4-byte utf8
  • New transactional storage engine (Falcon).


Support for parallelization is also part of the roadmap for future versions.[14]

Support for supplementary Unicode characters, beyond the 65536 characters of the Basic Multilingual Plane (BMP) is announced for MySQL 6.0.

Foreign key support for all storage engines is targeted for release in MySQL 6.1 (although it has been present since version 3.23.44 for InnoDB).

A new storage engine is also in the works, called Falcon. A preview of Falcon is already available on MySQL's website.

Support and licensing

Via MySQL Enterprise MySQL AB offers support itself, including a 24/7 service with 30-minute response time, the support team has direct access to the developers as necessary to handle problems. In addition it hosts forums and mailing lists, employees and other users are often available in several IRC channels providing assistance.

Buyers of MySQL Enterprise have access to binaries and software that is certified for their particular operating system, and access to monthly binary updates with the latest bug fixes. Several levels of Enterprise membership are available, with varying response times and features ranging from how to and emergency support through server performance tuning and system architecture advice. The MySQL Network Monitoring and Advisory Service monitoring tool for database servers is available only to MySQL Enterprise customers.

MySQL Server is available as free software under the GNU General Public License (GPL), and the MySQL Enterprise subscriptions include a GPL version of the server, with a traditional proprietary version available on request at no additional cost for cases where the intended use is incompatible with the GPL.[15]

Both the MySQL server software itself and the client libraries are distributed under a dual-licensing format. Users may choose the GPL,[16] 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.[17]

Customers that do not wish to be bound to the terms of the GPL may choose to purchase a proprietary license.[18]

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 GNU Lesser General Public License (LGPL).[19]

Issues

There has been some controversy regarding the distribution of GPL licensed 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.[20]

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 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,[21] mentioned that the contracts that make the company's software available to MySQL AB would be due 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.[22]

In February 2006, Oracle Corporation acquired Sleepycat Software,[23] makers of the Berkeley DB, a database engine onto which another MySQL storage engine was built.

Criticism

MySQL recently released version 5.1 with 20 known crashing and wrong result bugs in addition to the 35 present in version 5.0. [24]

Critical bugs sometimes do not get fixed for long periods of time. [25][26] An example is a bug with status critical existing since 2003. [27]

MySQL shows poor performance when used for Data Warehousing; this is partly due to inability to utilize multiple CPU cores for processing a single query. [28]

The developer of the Federated Storage Engine states that "The Federated Storage Engine is a proof-of-concept storage engine" [1], though it was included and turned on by default in the main distributions of MySQL version 5.0. Some of the short-comings are documented in the "MySQL Federated Tables: The Missing Manual" [2].

MySQL's divergence from the SQL standard regarding the treatment of NULL values and default values has been criticized. Its handling of dates in versions prior to 5.0 allows storing a date with a day beyond the last day of a month with fewer than 31 days, and arithmetic operations are vulnerable to either integer overflow or floating point truncation.[29] 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.[30]

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."[31] 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.

See also

References

  1. ^ Robin Schumacher, Arjen Lentz. "Dispelling the Myths". MySQL AB. Retrieved 2007-02-10.
  2. ^ Charles Babcock "Sun Locks Up MySQL, Looks To Future Web Development". InformationWeek. Retrieved 2008-02-27.
  3. ^ a b Sun Microsystems Announces Completion of MySQL Acquisition; Paves Way for Secure, Open Source Platform to Power the Network Economy, Sun Microsystems Press release, February 26, 2008
  4. ^ "What is MySQL?, MySQL 5.0 Reference Manual". MySQL AB. Retrieved 2007-02-10.
  5. ^ "Understand SQL". www.faqs.org/docs/.
  6. ^ Sobel, Jason (21 December 2007). "Keeping Up". Facebook Blog. Retrieved 2008-10-30.
  7. ^ Malik, Om (25 April 2008). "Facebook's Insatiable Hunger for Hardware". GigaOM. Retrieved 2008-10-30.
  8. ^ Claburn, Thomas (24 April 2007). "Google Releases Improved MySQL Code". Information Week. Retrieved 2008-11-30.
  9. ^ MySQL Internals Manual
  10. ^ PCSI Kits of Open Source Software for OpenVMS
  11. ^ Peter Zaitsev's blog
  12. ^ Kaj Arnö's reply
  13. ^ MySQL Max Build Policy
  14. ^ Does MySQL support query parallelisation?
  15. ^ "Must I purchase MySQL Enterprise under MySQL's Commercial License in order to receive support?". MySQL AB.
  16. ^ MySQL AB :: MySQL Open Source License
  17. ^ MySQL AB :: FLOSS License Exception
  18. ^ MySQL AB :: MySQL Commercial License
  19. ^ Debian - Package Search Results - libmysqlclient10
  20. ^ "MySQL Open Source License". MySQL AB.
  21. ^ "Oracle Plans to Increase Support for Open Source Software". Oracle and InnoDB.
  22. ^ "MySQL to Promote New Open Source DB Engines from its Partners and Dev Community". MySQL AB.
  23. ^ "Oracle Buys Sleepycat, Is JBoss Next?". Charles Babcock.
  24. ^ http://www.planetmysql.org/entry.php?id=16232
  25. ^ What's Drizzle?
  26. ^ Monty says: A bugs life
  27. ^ "If DROP TABLE while there's an active transaction, wrong binlog order". MySQL.
  28. ^ TPC-H Run on MySQL 5.1 and 6.0 | MySQL Performance Blog
  29. ^ http://sql-info.de/mysql/gotchas.html mySQL Gotchas
  30. ^ "MySQL 5.0 Reference Manual - 5.2.6 SQL Modes". MySQL AB.
  31. ^ "'Most important ever' MySQL reaches beta". Ingrid Marson.

External links