How to select the best DBMS software: A buyer's guide
A collection of articles that takes you from defining technology needs to purchasing options
MySQL is a popular open source relational database management system (RDBMS) choice for web-based applications. Developers, database administrators and DevOps teams use MySQL to build and manage next-generation web- and cloud-based applications.
The current version of MySQL, 5.7, offers a multitude of security improvements, including the removal of nonempty column values in the mysql.user table, policy-controlled automatic password expiration, user account locking and improved OpenSSL RSA certificate management. Other new capabilities added in this version include SQL mode changes, online ALTER TABLE, enhanced and new monitoring capabilities, expanded geographic information system for mobile applications, and many improvements to the InnoDB database engine.
As with most open source RDBMS options, MySQL is available in several different editions and runs on Windows, OS X, Solaris, FreeBSD and other variants of Linux and Unix:
- MySQL Classic Edition, available to only independent software vendors, OEMs and value-added resellers, is designed to be an embeddable database for read-intensive applications.
- MySQL Community Edition is the free downloadable version of MySQL available under the GNU General Public License (GPL).
- MySQL Standard Edition is the entry-level RDBMS offering for online transaction processing applications.
- MySQL Enterprise Edition adds advanced features, management tools (including OEM for MySQL) and technical support.
- MySQL Cluster Carrier Grade Edition is designed for Web and cloud development.
MySQL Cluster is an open source, adaptable DBMS designed to deliver high performance and availability for many types of business applications. For example, MySQL Cluster powers the subscriber databases of major communications service providers and is used in global fraud detection for financial transactions.
The current version of MySQL Cluster, 7.4, offers new features to automatically scale database services while maintaining five nines of availability. MySQL Cluster enables shared-nothing clustering of in-memory databases. It can be a viable solution when you need ACID (atomicity, consistency, isolation and durability) transactions with high availability or very rapid data modification or insertion rates on inexpensive hardware.
MySQL uses a pluggable storage engine architecture that enables storage engines to be loaded into and unloaded from a running MySQL server. The storage engine handles the SQL operations for different types of MySQL tables. By swapping MySQL storage engines, you can change the behavior of MySQL.
InnoDB, a transaction-safe, ACID-compliant storage engine, is the default MySQL storage engine. Other storage engines include MyISAM (for Web, data warehousing), Memory (for in-memory), CSV (for text), and Archive.
Data types supported by MySQL open source RDBMS
MySQL data types include numeric types, date and time types, string types (including binary, character and Binary Large Object), and spatial types. Additionally, MySQL will map certain data types from other DBMSes to MySQL data types for easier portability.
Licensing, pricing and performance
MySQL is an open source RDBMS available under the GNU GPL. Commercial versions of MySQL are sold directly from Oracle (including via an online store) and its business partners. Pricing is by socket and starts at $2,000 to $10,000, depending upon edition. MySQL is available for free download, and a trial version of MySQL Enterprise Edition is available from Oracle.
About the author
Craig S. Mullins is a data management strategist, researcher, consultant and author with more than 30 years of experience in all facets of database systems development. He is president and principal consultant of Mullins Consulting Inc. and publisher/editor of TheDatabaseSite.com. Email him at firstname.lastname@example.org.
This article was updated in September 2016.
Learn more about using MySQL licensing
Read up on top MySQL features