[MDEV-2324] LP:711648 - Unpredictable behaviour of setting optimizer_switch='mrr_sort_keys=off' Created: 2011-02-02 Updated: 2015-02-02 Resolved: 2012-10-04 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Critical |
| Reporter: | Igor Babaev | Assignee: | Sergei Petrunia |
| Resolution: | Not a Bug | Votes: | 0 |
| Labels: | Launchpad | ||
| Attachments: |
|
| Description |
|
I observe the following strange behavior of the mariadb server built from the current LP 5.3 tree when MariaDB [test]> use dbt3x10_innodb; Database changed MariaDB [dbt3x10_innodb]> set join_buffer_space_limit=1024*1024*32; MariaDB [dbt3x10_innodb]> set join_cache_level=6; MariaDB [dbt3x10_innodb]> set optimizer_switch='mrr_sort_keys=off'; MariaDB [dbt3x10_innodb]>
---
--- MariaDB [dbt3x10_innodb]> explain select avg(l_extendedprice) from orders, lineitem where l_orderkey=o_orderkey and o_orderdate between date '1992-07-01' and date '1992-07-31';
---
--- MariaDB [dbt3x10_innodb]> analyze table lineitem;
------------------------
------------------------ MariaDB [dbt3x10_innodb]> explain select avg(l_extendedprice) from orders, lineitem where l_orderkey=o_orderkey and o_orderdate between date '1992-07-01' and date '1992-07-31';
---
--- I observe this behavior for both debug and non-debug version of the server on SuSE 10.3 32-bit. Sometimes the last command returns the following result:
---
--- I did not try to execute this sequence of commands with dbt3 of a smaller factor. Maybe the problem can be |
| Comments |
| Comment by Sergei Petrunia [ 2011-02-02 ] |
|
Re: Unpredictable behaviour of setting optimizer_switch='mrr_sort_keys=off' explain select avg(l_extendedprice) from orders, lineitem where l_orderkey=o_orderkey and o_orderdate between date '1992-07-01' and date '1992-07-31'; Attempt#1: 2nd table is lineitem, type=ref, key=i_l_orderkey, Extra="Using join buffer (flat, BKA join)" <ANALYZE is run> Attempt#3: 2nd table is lineitem, type=ref, key=PRIMARY, Extra="", rows=2 |
| Comment by Sergei Petrunia [ 2011-02-02 ] |
|
Re: Unpredictable behaviour of setting optimizer_switch='mrr_sort_keys=off' Attempt#1 and #2 are OK. ANALYZE command updates index cardinalities. After that, the optimizer starts to prefer a prefix of PRIMARY key over i_l_orderkey index. This is ok, too (even if it wasn't: this would have no relation to mrr_sort_keys switch/code). optimizer_switch='mrr_sort_keys=off' setting disables key sorting functionality. DS-MRR's operation over a clustered primary key is defined as
that is, if sorting is disabled, then DS-MRR has nothing to do. handler->multi_range_read_info() function will indicate that to BKA code by setting HA_MRR_USE_DEFAULT_IMPL. when BKA code sees this flag, it disables use of join buffering. I think everything is operating as-designed here. |
| Comment by Rasmus Johansson (Inactive) [ 2011-02-03 ] |
|
Launchpad bug id: 711648 |
| Comment by Sergei Petrunia [ 2011-02-03 ] |
|
Re: Unpredictable behaviour of setting optimizer_switch='mrr_sort_keys=off' |