MySQL 5.5: InnoDB Performance Improvements on Windows

At MySQL, we know our users want Performance, Scalability,
Reliability, and Availability, regardless of the platform the choose to
deploy. We have always had excellent benchmarks on Linux, and with
MySQL 5.5, we are also working hard on improving performance on Windows.

The original patch of improving Windows performance was developed by
MySQL senior developer Vladislav Vaintroub; benchmarks by QA engineer
Jonathan Miller. We integrated the patch into MySQL 5.5 release.

The following two charts show the comparison of MySQL 5.5 vs. MySQL 5.1 (plugin) vs. MySQL 5.1 (builtin) using sysbench:

MySQL 5.5 includes a Windows performance patch, plus other performance improvements.
This Windows performance patch has two part: part one is to fix the
inefficiency of InnoDB slow mutex implementation on Windows – implement
slow mutex as CriticalSection; and part two is to take advantage of condition variables
on Windows Vista or newer Windows operating systems. Condition
variables are not supported on Windows Server 2003 and Windows XP/2000.

What if I have an old Windows on which condition variables are not
supported? Well, you can still benefit from the new slow mutex
implementation; but will not be able to take the advantage of condition
variables. The same binary runs on old Windows too. The InnoDB does a
dynamic checking during start-up, to see whether condition variables are
supported by the operating system it runs on.

Another benefit from this patch is the reduced consumption of Windows
kernel objects (or handles), which deserves another blog on its own.