MySQL
Introduction
MySQL is an open-source relational database management system (RDBMS) based on Structured Query Language (SQL). MySQL is developed, distributed, and supported by Oracle Corporation. It is named after co-founder Michael Widenius's daughter, My. The SQL phrase stands for Structured Query Language.
History
MySQL was first developed by a Swedish company, MySQL AB, founded by David Axmark, Allan Larsson, and Michael "Monty" Widenius. The first version of MySQL appeared in 1995. It was initially created for personal usage but in a few years evolved into a enterprise level database system. In 2008, MySQL AB was acquired by Sun Microsystems, which was subsequently bought by Oracle Corporation in 2010. Since then, MySQL has been further developed and maintained by Oracle.
Features
MySQL is a central component of the LAMP open-source web application software stack (and other 'AMP' stacks). LAMP is an acronym for "Linux, Apache, MySQL, Perl/PHP/Python". Applications that use the MySQL database include: TYPO3, MODx, Joomla, WordPress, phpBB, MyBB, Drupal and other software. MySQL is also used in many high-profile, large-scale websites, including Google, Facebook, Twitter, Flickr, and YouTube.
MySQL works on many different system platforms, including AIX, BSDi, FreeBSD, HP-UX, i5/OS, IRIX, Linux, macOS, Microsoft Windows, NetBSD, Novell NetWare, OpenBSD, Oracle Solaris, OS/2 Warp, QNX, Symbian, SunOS, SCO OpenServer, SCO UnixWare, Sanos and Tru64. A port of MySQL to OpenVMS also exists.
The MySQL server software itself and the client libraries use dual-licensing distribution. They are offered under GPL version 2, or a proprietary license.
MySQL's API is available in multiple languages, including C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl.
Architecture
MySQL uses a client/server architecture. There is a database server (MySQL Server) and arbitrarily many clients (applications), which communicate with the server; that is, they query data, save changes, etc. Communication takes place via a protocol that is designed to facilitate the tasks of the database engine, and thus, it is a database-specific protocol (not used by other DBMSs).
MySQL is fully multi-threaded, and will make use of multiple CPUs, if they are available. The MySQL server is implemented with a multi-layered server design with independent modules. The physical structure of the MySQL server allows it to be configured for many different uses.
Storage Engines
MySQL uses a pluggable storage engine architecture which allows users to choose the optimal table type for each specific use case. The primary storage engines include the transaction-safe InnoDB and NOT transaction-safe MyISAM, among others.
Replication
MySQL supports a number of different replication configurations. The most common is the master-slave configuration, where one database server (the master) is used as the primary data store, while other database servers (the slaves) replicate the master's data.
Security
MySQL includes security features, such as connections encrypted using SSL, and support for internal and external authentication mechanisms to ensure only authorized users have access.
Performance
Performance of MySQL can be tuned and optimized using various configuration settings, tools, and techniques. MySQL includes a performance schema that collects detailed data on database activity and provides tools for diagnosing performance issues.
Criticisms
Despite its widespread use, MySQL has received criticism for a number of reasons. These include lack of certain features, such as full ACID compliance until version 5.0, as well as performance issues, particularly in high concurrency environments.