GNU Info

Info Node: (mysql.info)Stability

(mysql.info)Stability


Next: Table size Prev: Features Up: MySQL and MySQL AB
Enter node , (file) or (file)node

How Stable Is MySQL?
--------------------

This section addresses the questions "How stable is MySQL?" and "Can I
depend on MySQL in this project?"  We will try to clarify some issues
and to answer some of the more important questions that seem to concern
many people.  This section has been put together from information
gathered from the mailing list (which is very active in reporting bugs).

At TcX, MySQL has worked without any problems in our projects since
mid-1996.  When MySQL was released to a wider public, we noticed that
there were some pieces of "untested code" that were quickly found by the
new users who made queries in a manner different than our own.  Each new
release has had fewer portability problems than the previous one (even
though each has had many new features).

Each release of MySQL has been usable, and there have been problems
only when users start to use code from the "gray zones."  Naturally,
outside users don't know what the gray zones are; this section attempts
to indicate those that are currently known.  The descriptions deal with
Version 3.23 of MySQL.  All known and reported bugs are fixed in the
latest version, with the exception of the bugs listed in the bugs
section, which are things that are design-related.  Note: Bugs.

MySQL is written in multiple layers and different independent modules.
These modules are listed below with an indication of how well-tested
each of them is:

*The ISAM table handler -- Stable*
     This manages storage and retrieval of all data in MySQL Version
     3.22 and earlier.  In all MySQL releases there hasn't been a single
     (reported) bug in this code. The only known way to get a corrupted
     table is to kill the server in the middle of an update.  Even that
     is unlikely to destroy any data beyond rescue, because all data
     are flushed to disk between each query.  There hasn't been a
     single bug report about lost data because of bugs in MySQL.

*The MyISAM table handler -- Stable*
     This is new in MySQL Version 3.23.  It's largely based on the ISAM
     table code but has a lot of new and very useful features.

*The parser and lexical analyser -- Stable*
     There hasn't been a single reported bug in this system for a long
     time.

*The C client code -- Stable*
     No known problems.  In early Version 3.20 releases, there were
     some limitations in the send/receive buffer size.  As of Version
     3.21, the buffer size is now dynamic up to a default of 16M.

*Standard client programs -- Stable*
     These include `mysql', `mysqladmin', `mysqlshow', `mysqldump', and
     `mysqlimport'.

*Basic SQL -- Stable*
     The basic SQL function system and string classes and dynamic memory
     handling.  Not a single reported bug in this system.

*Query optimizer -- Stable*

*Range optimizer -- Stable*

*Join optimizer -- Stable*

*Locking -- Gamma*
     This is very system-dependent.  On some systems there are big
     problems using standard OS locking (`fcntl()').  In these cases,
     you should run the MySQL daemon with the `--skip-locking' flag.
     Problems are known to occur on some Linux systems, and on SunOS
     when using NFS-mounted file systems.

*Linux threads -- Stable*
     The major problem found has been with the `fcntl()' call, which is
     fixed by using the `--skip-locking' option to `mysqld'.  Some
     people have reported lockup problems with Version 0.5.
     LinuxThreads will need to be recompiled if you plan to use 1000+
     concurrent connections.  Although it is possible to run that many
     connections with the default LinuxThreads (however, you will never
     go above 1021), the default stack spacing of 2 MB makes the
     application unstable, and we have been able to reproduce a
     coredump after creating 1021 idle connections.  Note: Linux.

*Solaris 2.5+ pthreads -- Stable*
     We use this for all our production work.

*MIT-pthreads (Other systems) -- Stable*
     There have been no reported bugs since Version 3.20.15 and no
     known bugs since Version 3.20.16.  On some systems, there is a
     "misfeature" where some operations are quite slow (a 1/20 second
     sleep is done between each query).  Of course, MIT-pthreads may
     slow down everything a bit, but index-based `SELECT' statements
     are usually done in one time frame so there shouldn't be a mutex
     locking/thread juggling.

*Other thread implementions -- Beta - Gamma*
     The ports to other systems are still very new and may have bugs,
     possibly in MySQL, but most often in the thread implementation
     itself.

*`LOAD DATA ...', `INSERT ... SELECT' -- Stable*
     Some people thought they had found bugs here, but these usually
     have turned out to be misunderstandings.  Please check the manual
     before reporting problems!

*`ALTER TABLE' -- Stable*
     Small changes in Version 3.22.12.

*DBD -- Stable*
     Now maintained by Jochen Wiedmann (<wiedmann@neckar-alb.de>).
     Thanks!

*`mysqlaccess' -- Stable*
     Written and maintained by Yves Carlier (<Yves.Carlier@rug.ac.be>).
     Thanks!

*`GRANT' -- Stable*
     Big changes made in MySQL Version 3.22.12.

**MyODBC* (uses ODBC SDK 2.5) -- Gamma*
     It seems to work well with some programs.

*Replication - Beta / Gamma*
     We are still working on replication, so don't expect this to be
     rock solid yet.  On the other hand, some MySQL users are already
     using this with good results.

*BDB Tables - Beta*
     The Berkeley DB code is very stable, but we are still improving
     the interface between MySQL and BDB tables, so it will take some
     time before this is as tested as the other table types.

*InnoDB Tables - Beta*
     This is a recent addition to `MySQL'. They appear to work good and
     can be used after some initial testing.

*Automatic recovery of MyISAM tables - Beta*
     This only affects the new code that checks if the table was closed
     properly on open and executes an automatic check/repair of the
     table if it wasn't.

*MERGE tables - Beta / Gamma*
     The usage of keys on `MERGE' tables is still not that tested.  The
     other part of the `MERGE' code is quite well tested.

*FULLTEXT - Beta*
     Text search seems to work, but is still not widely used.

MySQL AB provides e-mail support for paying customers, but the MySQL
mailing list usually provides answers to common questions.  Bugs are
usually fixed right away with a patch; for serious bugs, there is
almost always a new release.


automatically generated by info2www version 1.2.2.9