On Thu, Dec 09, 2010 at 11:34:05AM +0200, Philip Stoev wrote:
I have a few questions with respect to the feature so that I can test it
better (we may have discussed those previously but I can not seem to find
- apart from mrr_sort_keys ON and OFF and engine_condition_pushdown = ON
| OFF and all join_cache_levels , is there any other optimizer switch
that I should fiddle with? Is there any switch that I can set to ON or
OFF in order to drive more queries to use your code?
@@engine_condition_pushdown variable does not have any effect with the
code. It controls table condition pushdown, which is only supported by
XtraDB/MyISAM/Maria have *index* condition pushdown, which can be turned
off by using SET @@optimizer_switch='index_condition_pushdown=on|off';
Overall, DS-MRR behavior can be modified by:
- @@join_cache_level setting (need to be such that BKA is enabled in order
new code to wor)
- @@join_buffer_size (sets size of the buffer that will be shared between
module and DS-MRR module)
- mrr_sort_keys=on|off @@optimizer_switch flag
- index_condition_pushdown=on|off @@optimizer_switch flag.
- apart from mrr_buffer_size , is there any other mysqld option I should
be conserned with. What values of mrr_buffer_size should be tested?
- what table sizes should I use and also how many tables should I join?
Is up to 1000 rows per table and 2-3-table joins sufficient? Or should I
go for the DBT-2 data set?
I think that we should first test with up to 1K rows per table and 2-4 way
I was quite impressed by the issue you've found in BUG#671340 (it was a
specific interaction of key sorting and rowid sorting, which could occur
when we're scanning a particular kind of data and exhaust the buffer at a
certain point). The testcase for that bug was rather small, I take the
original testcase found by RQG wasn't big either?
- how about multipart and prefix indexes?
Yes. I don't expect bugs to be there, but the code does work with index
so it would be nice to check how scanning on multipart indexes (and their
prefixes) work. Prefix indexes can be checked, too.
- should I test enum/set/bit and other marginal data types?
I can't think of realistic examples with those types, so we better focus
- are there any engine specific code or considerations?
XtraDB is different in the regard that it has clustered primary keys, and
MWL#121-125 adds support for MRR/BKA to work for clustered primary keys.
Maria/MyISAM should be checked too, they both have very similar DS-MRR
Sergey Petrunia, Software Developer
Monty Program AB, http://askmonty.org