DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) features

Info Catalog (mysql.info) history (mysql.info) what-is (mysql.info) stability
 
 1.4.2 The Main Features of MySQL
 --------------------------------
 
 The following list describes some of the important characteristics of
 the MySQL Database Software. See also  roadmap, for more
 information about current and upcoming features.
 
 Internals and Portability:
 
    * Written in C and C++.
 
    * Tested with a broad range of different compilers.
 
    * Works on many different platforms. See  which-os.
 
    * Uses GNU Automake, Autoconf, and Libtool for portability.
 
    * APIs for C, C++, Eiffel, Java, Perl, PHP, Python, Ruby, and Tcl
      are available. See  apis.
 
    * Fully multi-threaded using kernel threads. It can easily use
      multiple CPUs if they are available.
 
    * Provides transactional and non-transactional storage engines.
 
    * Uses very fast B-tree disk tables (`MyISAM') with index
      compression.
 
    * Relatively easy to add other storage engines. 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 optimized one-sweep multi-join.
 
    * In-memory hash tables, which are used as temporary tables.
 
    * SQL functions are implemented using a highly optimized class
      library and should be as fast as possible. Usually there is no
      memory allocation at all after query initialization.
 
    * The MySQL code is tested with Purify (a commercial memory leakage
      detector) as well as with Valgrind, a GPL tool
      (`http://developer.kde.org/~sewardj/').
 
    * The server is available as a separate program for use in a
      client/server networked environment. It is also available as a
      library that can be embedded (linked) into standalone
      applications. Such applications can be used in isolation or in
      environments where no network is available.
 
 Data Types:
 
    * Many data types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes
      long, `FLOAT', `DOUBLE', `CHAR', `VARCHAR', `TEXT', `BLOB', `DATE',
      `TIME', `DATETIME', `TIMESTAMP', `YEAR', `SET', `ENUM', and OpenGIS
      spatial types. See  data-types.
 
    * Fixed-length and variable-length records.
 
 Statements 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 citizen
               -> 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 standard
      SQL.
 
    * `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, database engines, tables, and indexes.
 
      The `EXPLAIN' command can be used to determine how the optimizer
      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 
      reserved-words.
 
    * You can mix tables from different databases in the same query (as
      of MySQL 3.22).
 
 Security:
 
    * A privilege and password system that is very flexible and secure,
      and that 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 who use MySQL
      Server with 60,000 tables and about 5,000,000,000 rows.
 
    * Up to 64 indexes per table are allowed (32 before MySQL 4.1.2).
      Each index may consist of 1 to 16 columns or parts of columns. The
      maximum index width is 1000 bytes (500 before MySQL 4.1.2). An
      index may use a prefix of a column for `CHAR', `VARCHAR', `BLOB',
      or `TEXT' column types.
 
 Connectivity:
 
    * Clients can connect to the MySQL server using TCP/IP sockets on
      any platform. On Windows systems in the NT family (NT, 2000, XP,
      or 2003), clients can connect using named pipes. On Unix systems,
      clients can connect using Unix domain socket files.
 
    * In MySQL versions 4.1 and higher, Windows servers also support
      shared-memory connections if started with the -shared-memory
      option. Clients can connect through shared memory by using the
      -protocol=memory option.
 
    * The Connector/ODBC (MyODBC) interface provides MySQL support for
      client programs that use ODBC (Open Database Connectivity)
      connections. For example, you can use MS Access to connect to your
      MySQL server. Clients can be run on Windows or Unix.  MyODBC
      source is available. All ODBC 2.5 functions are supported, as are
      many others. See  connectors.
 
    * The Connector/J interface provides MySQL support for Java client
      programs that use JDBC connections. Clients can be run on Windows
      or Unix. Connector/J source is available. See  connectors.
 
    * MySQL Connector/NET enables developers to easily create .NET
      applications that require secure, high-performance data
      connectivity with MySQL. It implements the required ADO.NET
      interfaces and integrates into ADO.NET aware tools. Developers can
      build applications using their choice of .NET languages.  MySQL
      Connector/NET is a fully managed ADO.NET driver written in 100%
      pure C#. See  connectors.
 
 Localization:
 
    * The server can provide error messages to clients in many
      languages. See  languages.
 
    * Full support for several different character sets, including
      `latin1' (cp1252), `german', `big5', `ujis', and more.  For
      example, the Scandinavian characters ‘`aa'’, ‘`a"'’ and
      ‘`o"'’ are allowed in table and column names. Unicode support
      is available as of MySQL 4.1.
 
    * 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 (using
      Swedish collation 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
      time and runtime.
 
 Clients and Tools:
 
    * MySQL Server has built-in support for SQL statements to check,
      optimize, and repair tables. These statements are available from
      the command line through the `mysqlcheck' client. MySQL also
      includes `myisamchk', a very fast command-line utility for
      performing these operations on `MyISAM' tables. See 
      database-administration.
 
    * All MySQL programs can be invoked with the -help or -? options to
      obtain online assistance.
 
Info Catalog (mysql.info) history (mysql.info) what-is (mysql.info) stability
automatically generated byinfo2html