Jump to content

MySQL: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
m Linked the word "Wikipedia" to the Wikipedia page
Line 127: Line 127:
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>{{cite web|url=http://www.mysqlperformanceblog.com/2008/04/10/tpc-h-run-on-mysql-51-and-60/ |title=TPC-H Run on MySQL 5.1 and 6.0 &#124; MySQL Performance Blog |publisher=MySQL Performance Blog<! |date= |accessdate=2009-06-08}}</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>{{cite web|url=http://www.mysqlperformanceblog.com/2008/04/10/tpc-h-run-on-mysql-51-and-60/ |title=TPC-H Run on MySQL 5.1 and 6.0 &#124; MySQL Performance Blog |publisher=MySQL Performance Blog<! |date= |accessdate=2009-06-08}}</ref>


MySQL does not offer a single table type ("storage engine") offering all features; the two most common types, MyISAM and InnoDB, do not completely overlap in their feature sets.<ref>{{cite web|url=http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html |title=MySQL :: MySQL 5.1 Reference Manual :: 13 Storage Engines |publisher=Dev.mysql.com |date=2008-01-26 |accessdate=2009-06-08}}</ref>
MySQL does not offer a single table type ("storage engine") offering all features; the two most common types, MyISAM and InnoDB, do not completely overlap in their feature sets.<ref>{{cite web|url=http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html |title=MySQL :: MySQL 5.1 Reference Manual :: 13 Storage Engines |publisher=Dev.mysql.com |date=2008-01-26 |accessdate=2009-06-08}}</ref>


Previous versions of MySQL did not support many standard SQL features, with the manual claiming that they were unnecessary or would hurt performance.<ref>{{cite web|url=http://www.genome.ou.edu/mysql_manual.html#Bugs|title=MySQL Reference Manual for version 3.21.22-beta}} (see sections 5.2, 5.6, 18.8)</ref> Even now, MySQL has many limitations that other RDBMS software (e.g. [[PostgreSQL]]) do not, such as the inability to refer to a temporary table twice in one query<ref>{{cite web|url=http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html |title=MySQL :: MySQL 5.0 Reference Manual :: B.1.7.3 TEMPORARY Table Problems |publisher=Dev.mysql.com |date= |accessdate=2009-06-08}}</ref> and extremely poor subselect performance.<ref>{{cite web|url=http://bugs.mysql.com/bug.php?id=9090 |title=MySQL Bugs: #9090: Optimization Problem with a subquery in an IN Operation |publisher=Bugs.mysql.com |date= |accessdate=2009-06-08}}</ref>
Previous versions of MySQL did not support many standard SQL features, with the manual claiming that they were unnecessary or would hurt performance.<ref>{{cite web|url=http://www.genome.ou.edu/mysql_manual.html#Bugs|title=MySQL Reference Manual for version 3.21.22-beta}} (see sections 5.2, 5.6, 18.8)</ref> Even now, MySQL has many limitations that other RDBMS software (e.g. [[PostgreSQL]]) do not, such as the inability to refer to a temporary table twice in one query<ref>{{cite web|url=http://dev.mysql.com/doc/refman/5.0/en/temporary-table-problems.html |title=MySQL :: MySQL 5.0 Reference Manual :: B.1.7.3 TEMPORARY Table Problems |publisher=Dev.mysql.com |date= |accessdate=2009-06-08}}</ref> and extremely poor subselect performance.<ref>{{cite web|url=http://bugs.mysql.com/bug.php?id=9090 |title=MySQL Bugs: #9090: Optimization Problem with a subquery in an IN Operation |publisher=Bugs.mysql.com |date= |accessdate=2009-06-08}}</ref>

Revision as of 12:46, 6 July 2009

MySQL
Developer(s)MySQL AB
Initial releaseMay 23, 1995 (1995-05-23)
Repository
Written inC, C++
Operating systemCross-platform
Available inEnglish
TypeRDBMS
LicenseGNU General Public License (version 2) or proprietary EULA
Websitemysql.com

MySQL (Template:PronEng[1] My S-Q-L, or "My sequel" /maɪˈsiːkwəl/) is a relational database management system (RDBMS)[2] which has more than 6 million installations.[3] The program runs as a server providing multi-user access to a number of databases.

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 owned and sponsored by a single for-profit firm, the Swedish company MySQL AB, now a subsidiary of Sun Microsystems,[4] which holds the copyright to most of the codebase.

MySQL is commonly used by free software projects which require a full-featured database management system, such as WordPress, phpBB and other software built on the LAMP software stack. It is also used in very high-scale World Wide Web products including Google and Facebook.

Uses

MySQL is used in web applications and acts as the database component of the LAMP software stack. Its popularity for use with web applications is closely tied to the popularity of PHP, which is often combined with MySQL. Several high-traffic web sites (including Flickr, Facebook,[5][6] Wikipedia, Google[7] (though not for searches), Nokia, Auctionmarts and YouTube) use MySQL for data storage and logging of user data.

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, sql_lex.cc[8]

MySQL works on many different system platforms, including AIX, BSDi, FreeBSD, HP-UX, i5/OS, Linux, Mac OS X, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, eComStation, OS/2 Warp, QNX, IRIX, Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos, Tru64 and Microsoft Windows. A port of MySQL to OpenVMS is also available.[9]

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 Navicat Free Lite Edition or SQLyog Community Edition, they are free desktop based GUI tools, and phpMyAdmin, a free Web-based administration interface implemented in PHP.

Features

As of April 2009, MySQL offers MySQL 5.1 in two different variants: the MySQL Community Server and Enterprise Server.[10] 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 one to choose the one that 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):
  • 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:

  • MySQL was originally developed by Michael Widenius and David Axmark beginning in 1994 [14]
  • MySQL was first released internally on 23 May 1995
  • Windows version was released on 8 January 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.01: beta from August 2003, Jyoti adopts MySQL for database tracking
  • Version 4.1: beta from June 2004, production release October 2004 (R-trees and B-trees, subqueries, prepared statements)
  • Version 5.0: beta from March 2005, production release October 2005 (cursors, stored procedures, triggers, views, XA transactions)
  • Sun Microsystems acquired MySQL AB on 26 February 2008.[4]
  • Version 5.1: production release 27 November 2008 (event scheduler, partitioning, plugin API, row-based replication, server log tables)

Future releases

The MySQL 6 roadmap outlines support for:

  • Referential integrity and 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).
  • Support for supplementary Unicode characters, beyond the 65,536 characters of the Basic Multilingual Plane (BMP) is announced for MySQL 6.0.
  • A new storage engine is also in the works, called Falcon. A preview of Falcon is available on MySQL's website.

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

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.[16]

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

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

Like many open-source programs, the name "MySQL" is trademarked and may only be used with the trademark holder's permission.

Criticism

MySQL recently (2008) released version 5.1 with 20 known crashing and wrong result bugs in addition to the 35 present in version 5.0.[20] Critical bugs sometimes do not get fixed for long periods of time.[21] An example was a critical bug which was reported in 2003 and eventually patched six years later in an alpha release.[22]

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.[23]

MySQL does not offer a single table type ("storage engine") offering all features; the two most common types, MyISAM and InnoDB, do not completely overlap in their feature sets.[24]

Previous versions of MySQL did not support many standard SQL features, with the manual claiming that they were unnecessary or would hurt performance.[25] Even now, MySQL has many limitations that other RDBMS software (e.g. PostgreSQL) do not, such as the inability to refer to a temporary table twice in one query[26] and extremely poor subselect performance.[27]

The developer of the Federated Storage Engine states that "The Federated Storage Engine is a proof-of-concept storage engine",[28] 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".

Competition

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,[29] 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.[30]

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

In April 2009, Oracle Corporation entered into an agreement to purchase Sun Microsystems,[32] current owners of the MySQL intellectual property. Although the deal was approved by Sun's board of directors, it has not yet been finalized.

See also

Template:Fossportal

References

  1. ^ "What is MySQL?, MySQL 5.0 Reference Manual". MySQL AB. Retrieved 2007-02-10.
  2. ^ Robin Schumacher, Arjen Lentz. "Dispelling the Myths". MySQL AB. Retrieved 2007-02-10.
  3. ^ Charles Babcock "Sun Locks Up MySQL, Looks To Future Web Development". InformationWeek. Retrieved 2008-02-27.
  4. ^ 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
  5. ^ Sobel, Jason (21 December 2007). "Keeping Up". Facebook Blog. {{cite web}}: Unknown parameter |ac cessdate= ignored (help)
  6. ^ Malik, Om (25 April 2008). "Facebook's Insatiable Hunger for Hardware". GigaOM. Retrieved 2008-10-30.
  7. ^ Claburn, Thomas (24 April 2007). "Google Releases Improved MySQL Code". Information Week. Retrieved 2008-11-30.
  8. ^ "MySQL Internals Manual". Dev.mysql.com. 2009-03-04. Retrieved 2009-06-08.
  9. ^ Jean-François PIÉRONNE. "PCSI Kits of Open Source Software for OpenVMS". Pi-net.dyndns.org. Retrieved 2009-06-08.
  10. ^ "Which Should I Use: MySQL Enterprise or MySQL Community Server?". MySQL AB. Retrieved 2009-04-08.
  11. ^ "Peter Zaitsev's blog". Mysqlperformanceblog.com. Retrieved 2009-06-08.
  12. ^ "Kaj Arnö's reply". Planetmysql.org. Retrieved 2009-06-08.
  13. ^ "MySQL Max Build Policy". Planetmysql.org. 2006-07-21. Retrieved 2009-06-08.
  14. ^ "Five Questions With Michael Widenius - Founder And Original Developer Of MySQL". Opensourcereleasefeed.com. Retrieved 2009-06-08.
  15. ^ "Does MySQL support query parallelisation?". Forums.mysql.com. Retrieved 2009-06-08.
  16. ^ "Must I purchase MySQL Enterprise under MySQL's Commercial License in order to receive support?". MySQL AB.
  17. ^ "MySQL AB :: MySQL Open Source License". Mysql.com. Retrieved 2009-06-08.
  18. ^ "MySQL AB :: FLOSS License Exception". Mysql.com. Retrieved 2009-06-08.
  19. ^ "MySQL AB :: MySQL Commercial License". Mysql.com. Retrieved 2009-06-08.
  20. ^ "Archives - Oops, we did it again (MySQL 5.1 released as GA wi". Planet MySQL. 2008-11-29. Retrieved 2009-04-03.
  21. ^ "What's Drizzle?". It.toolbox.com. Retrieved 2009-06-08.
  22. ^ "If DROP TABLE while there's an active transaction, wrong binlog order". MySQL.
  23. ^ "TPC-H Run on MySQL 5.1 and 6.0 | MySQL Performance Blog". MySQL Performance Blog<!. Retrieved 2009-06-08.
  24. ^ "MySQL :: MySQL 5.1 Reference Manual :: 13 Storage Engines". Dev.mysql.com. 2008-01-26. Retrieved 2009-06-08.
  25. ^ "MySQL Reference Manual for version 3.21.22-beta". (see sections 5.2, 5.6, 18.8)
  26. ^ "MySQL :: MySQL 5.0 Reference Manual :: B.1.7.3 TEMPORARY Table Problems". Dev.mysql.com. Retrieved 2009-06-08.
  27. ^ "MySQL Bugs: #9090: Optimization Problem with a subquery in an IN Operation". Bugs.mysql.com. Retrieved 2009-06-08.
  28. ^ "capttofu: FederatedX Pluggable Storage Engine Released!". Capttofu.livejournal.com. Retrieved 2009-04-03.
  29. ^ "Oracle Plans to Increase Support for Open Source Software". Oracle and InnoDB.
  30. ^ "MySQL to Promote New Open Source DB Engines from its Partners and Dev Community". MySQL AB.
  31. ^ "Oracle Buys Sleepycat, Is JBoss Next?". Charles Babcock.
  32. ^ "IT giant Oracle to buy Sun Microsystems for US$4.7B after IBM dropped bid". Associated Press.