Most of the following tests were performed on Linux with the MySQL benchmarks, but they should give some indication for other operating systems and workloads.
You obtain the fastest executables when you link with
By using better compiler and compilation options, you can obtain a 10% to 30% speed increase in applications. This is particularly important if you compile the MySQL server yourself.
When we tested both the Cygnus CodeFusion and Fujitsu compilers, neither was sufficiently bug-free to enable MySQL to be compiled with optimizations enabled.
The standard MySQL binary distributions are compiled with support
for all character sets. When you compile MySQL yourself, you
should include support only for the character sets that you are
going to use. This is controlled by the
--with-charset option to
Here is a list of some measurements that we have made:
If you link dynamically (without
-static), the result is 13% slower on Linux. Note that you still can use a dynamically linked MySQL library for your client applications. It is the server that is most critical for performance.
For a connection from a client to a server running on the same host, if you connect using TCP/IP rather than a Unix socket file, performance is 7.5% slower. (On Unix, if you connect to the host name
localhost, MySQL uses a socket file by default.)
For TCP/IP connections from a client to a server, connecting to a remote server on another host is 8% to 11% slower than connecting to a server on the same host, even for connections faster than 100Mb/s Ethernet.
When running our benchmark tests using secure connections (all data encrypted with internal SSL support) performance was 55% slower than with unencrypted connections.
If you compile with
--with-debug=full, most queries are 20% slower. Some queries may take substantially longer; for example, the MySQL benchmarks run 35% slower. If you use
=full), the speed decrease is only 15%. For a version of mysqld that has been compiled with
--with-debug=full, you can disable memory checking at runtime by starting it with the
--skip-safemallocoption. The execution speed should then be close to that obtained when configuring with
On a Sun UltraSPARC-IIe, a server compiled with Forte 5.0 is 4% faster than one compiled with gcc 3.2.
On a Sun UltraSPARC-IIe, a server compiled with Forte 5.0 is 4% faster in 32-bit mode than in 64-bit mode.
Compiling with gcc 2.95.2 for UltraSPARC with the
-mcpu=v8 -Wa,-xarch=v8plusaoptions gives 4% better performance.
Compiling on Linux-x86 using gcc without frame pointers (
-fomit-frame-pointer -ffixed-ebp) makes mysqld 1% to 4% faster.