This section addresses the questions, ``how stable is
MySQL?'' and, ``can I depend on MySQL in this project?''
Here 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), and we hope that it will be possible to label
one of the next releases ``stable''.
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 can't know what the gray zones are; this section attempts to indicate
those that are currently known. The descriptions deal with the 3.22.x
version 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. E Known errors and design deficiencies in MySQL.
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 3.22
and earlier versions. 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, either.
- The MyISAM table handler -- Beta
-
This is new in MySQL 3.23. It's largely based on the ISAM table code
but has a lot of new 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 3.20 releases, there were some limitations in
the send/receive buffer size. As of 3.21.x, the buffer size is now dynamic up
to a default of 24M.
- Standard client programs -- Stable
-
These include
mysql
, mysqladmin
and 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 -- Gamma
-
- 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 -- Gamma
-
The only 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 the 0.5 release.
- Solaris 2.5+ pthreads -- Stable
-
We use this for all our production work.
- MIT-pthreads (Other systems) -- Gamma
-
There have been no reported bugs since 3.20.15 and no known bugs since
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 -- Alpha - Beta
-
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 have thought they have 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 3.22.12.
- DBD -- Stable
-
Now maintained by Jochen Wiedmann
mysqlaccess
-- Stable
-
Written and maintained by Yves Carlier
GRANT
-- Gamma
-
Big changes made in MySQL 3.22.12.
- MyODBC (uses ODBC SDK 2.5) -- Gamma
-
It seems to work well with some programs.
TcX provides email 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.