List:Maria Storage Engine« Previous MessageNext Message »
From:Michael Widenius Date:June 15 2008 3:54pm
Subject:Re: key cache mutex contention in MyISAM
View as plain text  

>>>>> "Mark" == Mark Callaghan <mcallaghan@stripped> writes:

>> >>>>> "Mark" == Mark Callaghan <mcallaghan@stripped>
> writes:
>> >> On May 28, 2008, at 3:43 PM, Mark Callaghan wrote:
>> >>
>> >>> Are there plans to fix the key cache mutex contention problem in
>> >>> MyISAM that occurs on SMP platforms? If there are plans, is there a
>> >>> worklog entry?


>> >> Do you have any idea how Monty planned to fix the problem?
Mark> I think he mentioned splitting it into several caches with a mutex
>> per
Mark> cache. But he should respond.
>> Yes, that's the plan.

Mark> Does this mean that MyISAM scalability will not be fixed and that user's
Mark> should switch to Maria if they want a solution for that. Most of my use of
Mark> MyISAM is from implicit (created internally by mysqld for group by, order
Mark> by) temp tables that spill to disk. I am risk averse and not willing to move
Mark> to new storage engines until they have been out for some time and someone
Mark> else has worked out the bugs, so for me MySQL will not solve the problem for
Mark> a few years.

No, MyISAM will probably not be fixed.

The good news for you is that the new keycache code for Maria should
not be hard to backport to MyISAM when it's ready; The only
limitations of the new cache from MyISAM's point of view if that the
new cache only supports one page size. It should however not be hard
to patch MyISAM to only use one page size (2 lines of code or so...)

There is some other good news for you:

- If you use the non-transactional tables with Maria, you will use the
  code that is to 95 % identical to MyISAM.  This should help get
  Maria with not transactional tables stable very soon!

- Maria is going to be production ready much sooner than within 2
  years;  I am myself hoping that Maria 1.5 (crash-safe release) we
  will be production ready within 4-6 months.

This is possible because Maria 1.5 is released in it's own branch,
MySQL 5.1-maria. We will keep this up to date with all bug fixes from
MySQL 5.1 and all also with all bugs in the Maria 1.5 release.

The Maria 1.5 code is also planned to be merged with the MySQL 6.0
code within a few weeks; We just have to finnish the last few things
that is needed for the Maria 1.5 release before we can start with the

The current state and release plan of Maria (as seen by the Maria
developers) is as follows:

- I am now 'coding' complete for the last visible feature in
  Maria. This means that everything I need to do for Maria 1.5 is
  done, the code compiles but there is still some bugs to work out.
  I should be able to do this during the next week.

- We will then release a last MySQL-5.1-Maria-alpha to get the code
  tested.  If there is no major bugs found that require a notable
  redesign we will release MySQL-5.1-Maria-beta after one month.
  If the beta is good, we will make a RC release one month later.
  One month later if everything is still good and MySQL 5.1 is GA we
  can release MySQL-5.1-Maria GA.

Mark> Can we have a fix for this sooner rather than 2 new storage engines?

What is wrong with the above way?

- If Maria works as we think it will work, it will be, for your purposes,
  stable and faster than MyISAM.
- In the worst case you can backport the new keycache module back to
  MyISAM.  This module will be tested quite throughly as part of the
  Maria releases so it should stabilize very soon.

Of course, we have in any case to wait for the new keycache code to
be written.  We hope to start on this around August.

Re: key cache mutex contention in MyISAMMichael Widenius15 Jun