MySQL

From Wikipedia for FEVERv2
Jump to navigation Jump to search

MySQL_table_infobox_0

MySQLMySQL_table_caption_0
Original author(s)MySQL_header_cell_0_0_0 MySQL ABMySQL_cell_0_0_1
Developer(s)MySQL_header_cell_0_1_0 Oracle CorporationMySQL_cell_0_1_1
Initial releaseMySQL_header_cell_0_2_0 23 May 1995; 25 years ago (1995-05-23)MySQL_cell_0_2_1
Stable releaseMySQL_header_cell_0_3_0 8.0.22
  / 2020-10-19MySQL_cell_0_3_1
RepositoryMySQL_header_cell_0_4_0 Q850#P1324MySQL_cell_0_4_1
Written inMySQL_header_cell_0_5_0 C, C++MySQL_cell_0_5_1
Operating systemMySQL_header_cell_0_6_0 Linux, Solaris, macOS, Windows, FreeBSDMySQL_cell_0_6_1
Available inMySQL_header_cell_0_7_0 EnglishMySQL_cell_0_7_1
TypeMySQL_header_cell_0_8_0 RDBMSMySQL_cell_0_8_1
LicenseMySQL_header_cell_0_9_0 GPLv2 or proprietaryMySQL_cell_0_9_1
WebsiteMySQL_header_cell_0_10_0 MySQL_cell_0_10_1

MySQL (/ˌmaɪˌɛsˌkjuːˈɛl/) is an open-source relational database management system (RDBMS). MySQL_sentence_0

Its name is a combination of "My", the name of co-founder Michael Widenius's daughter, and "SQL", the abbreviation for Structured Query Language. MySQL_sentence_1

A relational database organizes data into one or more data tables in which data types may be related to each other; these relations help structure the data. MySQL_sentence_2

SQL is a language programmers use to create, modify and extract data from the relational database, as well as control user access to the database. MySQL_sentence_3

In addition to relational databases and SQL, an RDBMS like MySQL works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups. MySQL_sentence_4

MySQL is free and open-source software under the terms of the GNU General Public License, and is also available under a variety of proprietary licenses. MySQL_sentence_5

MySQL was owned and sponsored by the Swedish company MySQL AB, which was bought by Sun Microsystems (now Oracle Corporation). MySQL_sentence_6

In 2010, when Oracle acquired Sun, Widenius forked the open-source MySQL project to create MariaDB. MySQL_sentence_7

MySQL has stand-alone clients that allow users to interact directly with a MySQL database using SQL, but more often MySQL is used with other programs to implement applications that need relational database capability. MySQL_sentence_8

MySQL is a component of the LAMP web application software stack (and others), which is an acronym for Linux, Apache, MySQL, Perl/PHP/Python. MySQL_sentence_9

MySQL is used by many database-driven web applications, including Drupal, Joomla, phpBB, and WordPress. MySQL_sentence_10

MySQL is also used by many popular websites, including Facebook, Flickr, MediaWiki, Twitter, and YouTube. MySQL_sentence_11

Overview MySQL_section_0

MySQL is written in C and C++. MySQL_sentence_12

Its SQL parser is written in yacc, but it uses a home-brewed lexical analyzer. MySQL_sentence_13

MySQL works on many system platforms, including AIX, BSDi, FreeBSD, HP-UX, ArcaOS, eComStation, i5/OS, IRIX, Linux, macOS, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, OpenSolaris, OS/2 Warp, QNX, Oracle Solaris, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos and Tru64. MySQL_sentence_14

A port of MySQL to OpenVMS also exists. MySQL_sentence_15

The MySQL server software itself and the client libraries use dual-licensing distribution. MySQL_sentence_16

They are offered under GPL version 2, or a proprietary license. MySQL_sentence_17

Support can be obtained from the official manual. MySQL_sentence_18

Free support additionally is available in different IRC channels and forums. MySQL_sentence_19

Oracle offers paid support via its MySQL Enterprise products. MySQL_sentence_20

They differ in the scope of services and in price. MySQL_sentence_21

Additionally, a number of third party organisations exist to provide support and services. MySQL_sentence_22

MySQL has received positive reviews, and reviewers noticed it "performs extremely well in the average case" and that the "developer interfaces are there, and the documentation (not to mention feedback in the real world via Web sites and the like) is very, very good". MySQL_sentence_23

It has also been tested to be a "fast, stable and true multi-user, multi-threaded SQL database server". MySQL_sentence_24

History MySQL_section_1

MySQL was created by a Swedish company, MySQL AB, founded by David Axmark, Allan Larsson and Michael "Monty" Widenius. MySQL_sentence_25

Original development of MySQL by Widenius and Axmark began in 1994. MySQL_sentence_26

The first version of MySQL appeared on 23 May 1995. MySQL_sentence_27

It was initially created for personal usage from mSQL based on the low-level language ISAM, which the creators considered too slow and inflexible. MySQL_sentence_28

They created a new SQL interface, while keeping the same API as mSQL. MySQL_sentence_29

By keeping the API consistent with the mSQL system, many developers were able to use MySQL instead of the (proprietarily licensed) mSQL antecedent. MySQL_sentence_30

Milestones MySQL_section_2

Additional milestones in MySQL development included: MySQL_sentence_31

MySQL_unordered_list_0

  • First internal release on 23 May 1995MySQL_item_0_0
  • Version 3.19: End of 1996, from www.tcx.seMySQL_item_0_1
  • Version 3.20: January 1997MySQL_item_0_2
  • Windows version was released on 8 January 1998 for Windows 95 and NTMySQL_item_0_3
  • Version 3.21: production release 1998, from www.mysql.comMySQL_item_0_4
  • Version 3.22: alpha, beta from 1998MySQL_item_0_5
  • Version 3.23: beta from June 2000, production release 22 January 2001MySQL_item_0_6
  • Version 4.0: beta from August 2002, production release March 2003 (unions).MySQL_item_0_7
  • Version 4.1: beta from June 2004, production release October 2004 (R-trees and B-trees, subqueries, prepared statements).MySQL_item_0_8
  • Version 5.0: beta from March 2005, production release October 2005 (cursors, stored procedures, triggers, views, XA transactions).MySQL_item_0_9

MySQL_description_list_1

  • The developer of the Federated Storage Engine states that "The Federated Storage Engine is a proof-of-concept storage engine", but the main distributions of MySQL version 5.0 included it and turned it on by default. Documentation of some of the short-comings appears in "MySQL Federated Tables: The Missing Manual".MySQL_item_1_10

MySQL_unordered_list_2

  • Sun Microsystems acquired MySQL AB in 2008.MySQL_item_2_11
  • Version 5.1: production release 27 November 2008 (event scheduler, partitioning, plugin API, row-based replication, server log tables)MySQL_item_2_12

MySQL_description_list_3

  • Version 5.1 contained 20 known crashing and wrong result bugs in addition to the 35 present in version 5.0 (almost all fixed as of release 5.1.51).MySQL_item_3_13
  • MySQL 5.1 and 6.0-alpha showed poor performance when used for data warehousing – partly due to its inability to utilize multiple CPU cores for processing a single query.MySQL_item_3_14

MySQL_unordered_list_4

  • Oracle acquired Sun Microsystems on 27 January 2010.MySQL_item_4_15
  • The day Oracle announced the purchase of Sun, Michael "Monty" Widenius forked MySQL, launching MariaDB, and took a swath of MySQL developers with him.MySQL_item_4_16

MySQL_unordered_list_5

  • MySQL Server 5.5 was generally available (as of December 2010). Enhancements and features include:MySQL_item_5_17
    • The default storage engine is InnoDB, which supports transactions and referential integrity constraints.MySQL_item_5_18
    • Improved InnoDB I/O subsystemMySQL_item_5_19
    • Improved SMP supportMySQL_item_5_20
    • Semisynchronous replication.MySQL_item_5_21
    • SIGNAL and RESIGNAL statement in compliance with the SQL standard.MySQL_item_5_22
    • Support for supplementary Unicode character sets utf16, utf32, and utf8mb4.MySQL_item_5_23
    • New options for user-defined partitioning.MySQL_item_5_24
  • MySQL Server 6.0.11-alpha was announced on 22 May 2009 as the last release of the 6.0 line. Future MySQL Server development uses a New Release Model. Features developed for 6.0 are being incorporated into future releases.MySQL_item_5_25
  • The general availability of MySQL 5.6 was announced in February 2013. New features included performance improvements to the query optimizer, higher transactional throughput in InnoDB, new NoSQL-style memcached APIs, improvements to partitioning for querying and managing very large tables, TIMESTAMP column type that correctly stores milliseconds, improvements to replication, and better performance monitoring by expanding the data available through the PERFORMANCE_SCHEMA. The InnoDB storage engine also included support for full-text search and improved group commit performance.MySQL_item_5_26
  • The general availability of MySQL 5.7 was announced in October 2015. As of MySQL 5.7.8, August 2015, MySQL supports a native JSON data type defined by .MySQL_item_5_27
  • MySQL Server 8.0 was announced in April 2018, including NoSQL Document Store, atomic and crash safe DDL sentences and JSON Extended syntax, new functions, such as JSON table functions, improved sorting, and partial updates. Previous MySQL Server 8.0.0-dmr (Milestone Release) was announced 12 September 2016.MySQL_item_5_28
  • MySQL was declared DBMS of the year 2019 from the DB-Engines rankingMySQL_item_5_29

Release history MySQL_section_3

MySQL_table_general_1

ReleaseMySQL_header_cell_1_0_0 General availabilityMySQL_header_cell_1_0_1 Latest minor versionMySQL_header_cell_1_0_2 Latest releaseMySQL_header_cell_1_0_3 End of supportMySQL_header_cell_1_0_4
Old version, no longer maintained: 5.1MySQL_header_cell_1_1_0 14 November 2008; 12 years ago (2008-11-14)MySQL_cell_1_1_1 5.1.73MySQL_cell_1_1_2 2013-12-03MySQL_cell_1_1_3 Dec 2013MySQL_cell_1_1_4
Old version, no longer maintained: 5.5MySQL_header_cell_1_2_0 3 December 2010; 10 years ago (2010-12-03)MySQL_cell_1_2_1 5.5.62MySQL_cell_1_2_2 2018-10-22MySQL_cell_1_2_3 Dec 2018MySQL_cell_1_2_4
Older version, yet still maintained: 5.6MySQL_header_cell_1_3_0 5 February 2013; 7 years ago (2013-02-05)MySQL_cell_1_3_1 5.6.50MySQL_cell_1_3_2 2020-10-19MySQL_cell_1_3_3 Feb 2021MySQL_cell_1_3_4
Older version, yet still maintained: 5.7MySQL_header_cell_1_4_0 21 October 2015; 5 years ago (2015-10-21)MySQL_cell_1_4_1 5.7.32MySQL_cell_1_4_2 2020-10-19MySQL_cell_1_4_3 Oct 2023MySQL_cell_1_4_4
Current stable version: 8.0MySQL_header_cell_1_5_0 19 April 2018; 2 years ago (2018-04-19)MySQL_cell_1_5_1 8.0.22MySQL_cell_1_5_2 2020-10-19MySQL_cell_1_5_3 Apr 2026MySQL_cell_1_5_4

Work on version 6 stopped after the Sun Microsystems acquisition. MySQL_sentence_32

The MySQL Cluster product uses version 7. MySQL_sentence_33

The decision was made to jump to version 8 as the next major version number. MySQL_sentence_34

Legal disputes and acquisitions MySQL_section_4

On 15 June 2001, NuSphere sued MySQL AB, TcX DataKonsult AB and its original authors Michael ("Monty") Widenius and David Axmark in U.S District Court in Boston for "breach of contract, tortious interference with third party contracts and relationships and unfair competition". MySQL_sentence_35

In 2002, MySQL AB sued Progress NuSphere for copyright and trademark infringement in United States district court. MySQL_sentence_36

NuSphere had allegedly violated MySQL AB's copyright by linking MySQL's GPL'ed code with NuSphere Gemini table without being in compliance with the license. MySQL_sentence_37

After a preliminary hearing before Judge Patti Saris on 27 February 2002, the parties entered settlement talks and eventually settled. MySQL_sentence_38

After the hearing, FSF commented that "Judge Saris made clear that she sees the GNU GPL to be an enforceable and binding license." MySQL_sentence_39

In October 2005, Oracle Corporation acquired Innobase OY, the Finnish company that developed the third-party InnoDB storage engine that allows MySQL to provide such functionality as transactions and foreign keys. MySQL_sentence_40

After the acquisition, an Oracle press release 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. MySQL_sentence_41

During the MySQL Users Conference in April 2006, MySQL AB issued a press release that confirmed that MySQL AB and Innobase OY agreed to a "multi-year" extension of their licensing agreement. MySQL_sentence_42

In February 2006, Oracle Corporation acquired Sleepycat Software, makers of the Berkeley DB, a database engine providing the basis for another MySQL storage engine. MySQL_sentence_43

This had little effect, as Berkeley DB was not widely used, and was dropped (due to lack of use) in MySQL 5.1.12, a pre-GA release of MySQL 5.1 released in October 2006. MySQL_sentence_44

In January 2008, Sun Microsystems bought MySQL AB for $1 billion. MySQL_sentence_45

In April 2009, Oracle Corporation entered into an agreement to purchase Sun Microsystems, then owners of MySQL copyright and trademark. MySQL_sentence_46

Sun's board of directors unanimously approved the deal. MySQL_sentence_47

It was also approved by Sun's shareholders, and by the U.S. government on 20 August 2009. MySQL_sentence_48

On 14 December 2009, Oracle pledged to continue to enhance MySQL as it had done for the previous four years. MySQL_sentence_49

A movement against Oracle's acquisition of MySQL AB, to "Save MySQL" from Oracle was started by one of the MySQL AB founders, Monty Widenius. MySQL_sentence_50

The petition of 50,000+ developers and users called upon the European Commission to block approval of the acquisition. MySQL_sentence_51

At the same time, some Free Software opinion leaders (including Pamela Jones of Groklaw, Jan Wildeboer and Carlo Piana, who also acted as co-counsel in the merger regulation procedure) advocated for the unconditional approval of the merger. MySQL_sentence_52

As part of the negotiations with the European Commission, Oracle committed that MySQL server will continue until at least 2015 to use the dual-licensing strategy long used by MySQL AB, with proprietary and GPL versions available. MySQL_sentence_53

The antitrust of the EU had been "pressuring it to divest MySQL as a condition for approval of the merger". MySQL_sentence_54

But, as revealed by WikiLeaks, the US Department of Justice, at the request of Oracle, pressured the EU to approve the merger unconditionally. MySQL_sentence_55

The European Commission eventually unconditionally approved Oracle's acquisition of MySQL AB on 21 January 2010. MySQL_sentence_56

In January 2010, before Oracle's acquisition of MySQL AB, Monty Widenius started a GPL-only fork, MariaDB. MySQL_sentence_57

MariaDB is based on the same code base as MySQL server 5.5 and aims to maintain compatibility with Oracle-provided versions. MySQL_sentence_58

Features MySQL_section_5

MySQL is offered under two different editions: the open source MySQL Community Server and the proprietary Enterprise Server. MySQL_sentence_59

MySQL Enterprise Server is differentiated by a series of proprietary extensions which install as server plugins, but otherwise shares the version numbering system and is built from the same code base. MySQL_sentence_60

Major features as available in MySQL 5.6: MySQL_sentence_61

The developers release minor updates of the MySQL Server approximately every two months. MySQL_sentence_62

The sources can be obtained from MySQL's website or from MySQL's GitHub repository, both under the GPL license. MySQL_sentence_63

Limitations MySQL_section_6

When using some storage engines other than the default of InnoDB, MySQL does not comply with the full SQL standard for some of the implemented functionality, including foreign key references. MySQL_sentence_64

Check constraints are parsed but ignored by all storage engines before MySQL version 8.0.15. MySQL_sentence_65

Up until MySQL 5.7, triggers are limited to one per action / timing, meaning that at most one trigger can be defined to be executed after an INSERT operation, and one before INSERT on the same table. MySQL_sentence_66

No triggers can be defined on views. MySQL_sentence_67

MySQL database's inbuilt functions like UNIX_TIMESTAMP() will return 0 after 03:14:07 UTC on 19 January 2038. MySQL_sentence_68

Recently, there had been an attempt to solve the problem which had been assigned to the internal queue. MySQL_sentence_69

Deployment MySQL_section_7

MySQL can be built and installed manually from source code, but it is more commonly installed from a binary package unless special customizations are required. MySQL_sentence_70

On most Linux distributions, the package management system can download and install MySQL with minimal effort, though further configuration is often required to adjust security and optimization settings. MySQL_sentence_71

Though MySQL began as a low-end alternative to more powerful proprietary databases, it has gradually evolved to support higher-scale needs as well. MySQL_sentence_72

It is still most commonly used in small to medium scale single-server deployments, either as a component in a LAMP-based web application or as a standalone database server. MySQL_sentence_73

Much of MySQL's appeal originates in its relative simplicity and ease of use, which is enabled by an ecosystem of open source tools such as phpMyAdmin. MySQL_sentence_74

In the medium range, MySQL can be scaled by deploying it on more powerful hardware, such as a multi-processor server with gigabytes of memory. MySQL_sentence_75

There are, however, limits to how far performance can scale on a single server ('scaling up'), so on larger scales, multi-server MySQL ('scaling out') deployments are required to provide improved performance and reliability. MySQL_sentence_76

A typical high-end configuration can include a powerful master database which handles data write operations and is replicated to multiple slaves that handle all read operations. MySQL_sentence_77

The master server continually pushes binlog events to connected slaves so in the event of failure a slave can be promoted to become the new master, minimizing downtime. MySQL_sentence_78

Further improvements in performance can be achieved by caching the results from database queries in memory using memcached, or breaking down a database into smaller chunks called shards which can be spread across a number of distributed server clusters. MySQL_sentence_79

High availability software MySQL_section_8

Oracle MySQL offers a high availability solution with a mix of tools including the MySQL router and the MySQL shell. MySQL_sentence_80

They are based on Group Replication, open source tools. MySQL_sentence_81

MariaDB offers a similar offer in terms of products. MySQL_sentence_82

Cloud deployment MySQL_section_9

Main article: Cloud database MySQL_sentence_83

MySQL can also be run on cloud computing platforms such as Microsoft Azure, Amazon EC2, . MySQL_sentence_84

Some common deployment models for MySQL on the cloud are: MySQL_sentence_85

MySQL_description_list_6

  • Virtual machine image: In this implementation, cloud users can upload a machine image of their own with MySQL installed, or use a ready-made machine image with an optimized installation of MySQL on it, such as the one provided by Amazon EC2.MySQL_item_6_30

MySQL_description_list_7

  • MySQL as a service: Some cloud platforms offer MySQL "as a service". In this configuration, application owners do not have to install and maintain the MySQL database on their own. Instead, the database service provider takes responsibility for installing and maintaining the database, and application owners pay according to their usage. Notable cloud-based MySQL services are the Amazon Relational Database Service; , , Rackspace; HP Converged Cloud; Heroku and Jelastic. In this model the database service provider takes responsibility for maintaining the host and database.MySQL_item_7_31

User interfaces MySQL_section_10

Graphical user interfaces MySQL_section_11

A graphical user interface (GUI) is a type of interface that allows users to interact with electronic devices or programs through graphical icons and visual indicators such as secondary notation, as opposed to text-based interfaces, typed command labels or text navigation. MySQL_sentence_86

Third-party proprietary and free graphical administration applications (or "front ends") are available that integrate with MySQL and enable users to work with database structure and data visually. MySQL_sentence_87

MySQL Workbench MySQL_section_12

Main article: MySQL Workbench MySQL_sentence_88

MySQL Workbench is the integrated environment for MySQL. MySQL_sentence_89

It was developed by MySQL AB, and enables users to graphically administer MySQL databases and visually design database structures. MySQL_sentence_90

MySQL Workbench is available in two editions, the regular free and open source Community Edition which may be downloaded from the MySQL website, and the proprietary Standard Edition which extends and improves the feature set of the Community Edition. MySQL_sentence_91

Other GUI tools MySQL_section_13

MySQL_unordered_list_8

Command-line interfaces MySQL_section_14

A command-line interface is a means of interacting with a computer program where the user issues commands to the program by typing in successive lines of text (command lines). MySQL_sentence_92

MySQL ships with many command line tools, from which the main interface is the mysql client. MySQL_sentence_93

MySQL Utilities is a set of utilities designed to perform common maintenance and administrative tasks. MySQL_sentence_94

Originally included as part of the MySQL Workbench, the utilities are a stand-alone download available from Oracle. MySQL_sentence_95

Percona Toolkit is a cross-platform toolkit for MySQL, developed in Perl. MySQL_sentence_96

Percona Toolkit can be used to prove replication is working correctly, fix corrupted data, automate repetitive tasks, and speed up servers. MySQL_sentence_97

Percona Toolkit is included with several Linux distributions such as CentOS and Debian, and packages are available for Fedora and Ubuntu as well. MySQL_sentence_98

Percona Toolkit was originally developed as Maatkit, but as of late 2011, Maatkit is no longer developed. MySQL_sentence_99

MySQL shell is a tool for interactive use and administration of the MySQL database. MySQL_sentence_100

It supports JavaScript, Python or SQL modes and it can be used for administration and access purposes. MySQL_sentence_101

Application programming interfaces MySQL_section_15

Many programming languages with language-specific APIs include libraries for accessing MySQL databases. MySQL_sentence_102

These include MySQL Connector/Net for .NET/CLI Languages, and the JDBC driver for Java. MySQL_sentence_103

In addition, an ODBC interface called MySQL Connector/ODBC allows additional programming languages that support the ODBC interface to communicate with a MySQL database, such as ASP or ColdFusion. MySQL_sentence_104

The HTSQL – URL-based query method also ships with a MySQL adapter, allowing direct interaction between a MySQL database and any web client via structured URLs. MySQL_sentence_105

Other drivers exists for languages like Python or Node.js. MySQL_sentence_106

Project forks MySQL_section_16

A variety of MySQL forks exist, including the following. MySQL_sentence_107

Current MySQL_section_17

MySQL_description_list_9

  • MariaDB: MariaDB is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. The fork has been led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle.MySQL_item_9_46

MySQL_description_list_10

Abandoned MySQL_section_18

See also MySQL_section_19

MySQL_unordered_list_11


Credits to the contents of this page go to the authors of the corresponding Wikipedia page: en.wikipedia.org/wiki/MySQL.