Search the MySQL manual:

1.2.2 The Main Features of MySQL

The following list describes some of the important characteristics of the MySQL Database Software. See section 1.5 MySQL 4.0 In A Nutshell.

Internals and Portability
  • Written in C and C++. Tested with a broad range of different compilers.
  • Works on many different platforms. See section 2.2.5 Operating Systems Supported by MySQL.
  • Uses GNU Automake, Autoconf, and Libtool for portability.
  • APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl. See section 9 MySQL APIs.
  • Fully multi-threaded using kernel threads. This means it can easily use multiple CPUs if available.
  • Transactional and non-transactional storage engines.
  • Very fast B-tree disk tables (MyISAM) with index compression.
  • Relatively easy to add another storage engine. This is useful if you want to add an SQL interface to an in-house database.
  • A very fast thread-based memory allocation system.
  • Very fast joins using an optimised one-sweep multi-join.
  • In-memory hash tables which are used as temporary tables.
  • SQL functions are implemented through a highly optimised class library and should be as fast as possible. Usually there isn't any memory allocation at all after query initialisation.
  • The MySQL code gets tested with Purify (a commercial memory leakage detector) as well as with Valgrind, a GPL tool (http://developer.kde.org/~sewardj/).
  • Available as client/server or embedded (linked) version.
Column Types
  • Many column types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, and ENUM types. See section 6.2 Column Types.
  • Fixed-length and variable-length records.
Commands and Functions
  • Full operator and function support in the SELECT and WHERE clauses of queries. For example:
    mysql> SELECT CONCAT(first_name, " ", last_name)
        -> FROM tbl_name
        -> WHERE income/dependents > 10000 AND age > 30;
    
  • Full support for SQL GROUP BY and ORDER BY clauses. Support for group functions (COUNT(), COUNT(DISTINCT ...), AVG(), STD(), SUM(), MAX(), MIN(), and GROUP_CONCAT()).
  • Support for LEFT OUTER JOIN and RIGHT OUTER JOIN with both standard SQL and ODBC syntax.
  • Support for aliases on tables and columns as required by SQL-92.
  • DELETE, INSERT, REPLACE, and UPDATE return the number of rows that were changed (affected). It is possible to return the number of rows matched instead by setting a flag when connecting to the server.
  • The MySQL-specific SHOW command can be used to retrieve information about databases, tables, and indexes. The EXPLAIN command can be used to determine how the optimiser resolves a query.
  • Function names do not clash with table or column names. For example, ABS is a valid column name. The only restriction is that for a function call, no spaces are allowed between the function name and the `(' that follows it. See section 6.1.7 Is MySQL Picky About Reserved Words?.
  • You can mix tables from different databases in the same query (as of Version 3.22).
Security
  • A privilege and password system that is very flexible and secure, and allows host-based verification. Passwords are secure because all password traffic is encrypted when you connect to a server.
Scalability and Limits
  • Handles large databases. We use MySQL Server with databases that contain 50 million records. We also know of users that use MySQL Server with 60,000 tables and about 5,000,000,000 rows.
  • Up to 32 indexes per table are allowed. Each index may consist of 1 to 16 columns or parts of columns. The maximum index width is 500 bytes (this may be changed when compiling MySQL Server). An index may use a prefix of a CHAR or VARCHAR field.
Connectivity
  • Clients may connect to the MySQL server using TCP/IP Sockets, Unix Sockets (Unix), or Named Pipes (NT).
  • ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All ODBC 2.5 functions are supported, as are many others. For example, you can use MS Access to connect to your MySQL server. See section 9.2 MySQL ODBC Support.
Localisation
  • The server can provide error messages to clients in many languages. See section 4.6.2 Non-English Error Messages.
  • Full support for several different character sets, including ISO-8859-1 (Latin1), german, big5, ujis, and more. For example, the Scandinavian characters `â', `ä' and `ö' are allowed in table and column names.
  • All data is saved in the chosen character set. All comparisons for normal string columns are case-insensitive.
  • Sorting is done according to the chosen character set (the Swedish way by default). It is possible to change this when the MySQL server is started. To see an example of very advanced sorting, look at the Czech sorting code. MySQL Server supports many different character sets that can be specified at compile and runtime.
Clients and Tools
  • Includes myisamchk, a very fast utility for table checking, optimisation, and repair. All of the functionality of myisamchk is also available through the SQL interface. See section 4 Database Administration.
  • All MySQL programs can be invoked with the --help or -? options to obtain online assistance.

User Comments

Add your own comment.