Friday, March 6, 2009

Does anyone really use MySQL/InnoDB on HPUX or Windows?

There is code in InnoDB (os/os0file.c) that limits InnoDB to one concurrent IO operation (read or write) per file. The code appears to be used for Windows and when HAVE_BROKEN_PREAD is defined. HAVE_BROKEN_PREAD appears to be defined for HPUX.

I can imagine that many Windows deployments won't mind or notice the impact this has on performance. But when you deploy on HPUX you likely have spent a bit of money to buy a high-performance server.

Have I read the code correctly? I don't build on Windows and HPUX, so I cannot confirm.
Does Percona do HPUX or Windows?

8 comments:

  1. Mark, InnoDB is set as the default engine by the installer on windows. I would say most Windows users are probably using InnoDB. Windows represents the largest OS that MySQL is downloaded for since most Linux distros bundle MySQL.

    ReplyDelete
  2. Are any of these customers IO bound?

    ReplyDelete
  3. On the contrary, folks with Windows servers need all the performance they can get. From my experience, people who deploy MySQL on Windows are those that are all-in with Microsoft and SQL Server is more than they need (or they're happy using it for data cubes, but really just need something behind their monitoring system).

    Pythian has a few customers who are Windows shops, and the very fact that Windows servers are problematic by themselves only increases the magnitude of pain caused by a MySQL bug/"feature".

    If you suffer from Chronic Fatigue Syndrome, that doesn't mean you don't notice when you get the flu. Contrariwise, it hits you harder.

    ReplyDelete
  4. Yea MySQL/InnoDB does get used on Windows.
    Can the problem be fixed without ripping out the Win support? I appreciate it might be a rather large #if construct. And, it Windows' pread() actually broken, and still at this point in time?
    Microsoft is also quite responsive in many instances these days, they may be quite willing to assist and either fix or help identify a workaround. Windows has quite a few similar APIs for the same foo....

    ReplyDelete
  5. Most of the windows clients I have worked with do not appear to be suffering from the severe IO issues I think this would cause.

    ReplyDelete
  6. What kind of IO rates do they maintain? I have no problem getting InnoDB to the point where it is very IO bound and uses much less of the server's IO capacity than it should.

    I discussed this with someone who builds Innodb on Windows. If you configure Innodb to not use Windows native AIO, then the behavior I described is correct. If you configure it to use Windows AIO, then it supports up to 32 pending reads and 32 pending writes over all files. An improvement over what I described, but still a bottleneck on servers with a lot of IO capacity.

    But why do we have to guess about this behavior? It should be documented.

    The HAVE_BROKEN_PREAD limit was a bug fix for 32-bit HPUX. But from looking at the configure file, it isn't clear to me how that is limited to 32-bit HP.

    ReplyDelete
  7. Mark and Matthew:
    I would guess that most of the windows downloads are used for development boxes.

    I recently had to deal with MySQL installed on Windows in a production environment. My understanding was that the choice of OS was made for non-technical reasons...

    ReplyDelete
  8. And things other then performance might have a higher priority -- such as manageability, reliability and ease of use. But performance is so much easier to measure.

    ReplyDelete

 
Creative Commons License
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.