Hi Holyfoot,

Thank you for the fix. Btw should the tests be included as well or did you
add them outside the commit?

Regards
Mattias

On Sat, Apr 28, 2018 at 1:50 PM, Alexey Botchkov <holyf...@askmonty.org>
wrote:

> Hello, guys.
>
> > 2) MDEV-11084 makes explicit partition selection work like FLUSH TABLE,
> due to the closing partitions part.
> After the discussion, I removed that part of the fix, so now the explicit
> statement won't force the partition close.
> So now the 'explicit_partition.test' passes.
>
> Best regards.
> HF
>
>
>
>
>
> 26.04.2018 14:59, Mattias Jonsson wrote:
>
> Hi Holyfoot, Sergei and Jacob,
>
> Thank you for looking into this.
>
> Jacob there are no Jira ticket (that I am aware of) also I do see it as
> two different problems with the same source.
> 1) Spider engine does not handle opening/closing specific partitions (as I
> understand it currently relies on opening/closing all partitions at once in
> order). Currently this is a crashing bug!
> 2) MDEV-11084 makes explicit partition selection work like FLUSH TABLE,
> due to the closing partitions part.
>
> I think it would be nice if you could create tickets for those two issues
> (or at least for the first one).
>
> Regards
> Mattias
>
> On Thu, Apr 26, 2018 at 11:26 AM, Alexey Botchkov <holyf...@mariadb.com>
> wrote:
>
>> No, there's no JIRA task for that problem.
>> So i guess you can create one :)
>>
>> Best regards.
>> HF
>>
>> On Thu, Apr 26, 2018 at 4:50 AM, Jacob Mathew <jacob.mat...@mariadb.com>
>> wrote:
>>
>>> Hi Mattias and Holyfoot,
>>>
>>> Is there a Jira bug for this problem?  If not I can create a bug for it
>>> and assign it to Holyfoot.
>>>
>>> Thanks,
>>> Jacob
>>>
>>> Jacob B. Mathew
>>> Spider and Server Developer
>>> MariaDB Corporation
>>> +1 408 655 8999  (mobile)
>>> jacob.b.mathew    (Skype)
>>> jacob.mat...@mariadb.com
>>>
>>>
>>> On Tue, Apr 17, 2018 at 9:11 AM, Mattias Jonsson <
>>> mattias.jons...@booking.com> wrote:
>>>
>>>> Hi Holyfoot,
>>>>
>>>> On Mon, Apr 16, 2018 at 3:38 PM, Alexey Botchkov <holyf...@askmonty.org>
>>>> wrote:
>>>> > Hi, Mattias, guys!
>>>> >
>>>> > While investigating the crash, i'd like to discuss that
>>>> >
>>>> >> it seems to close partitions whenever it
>>>> >> is not used in a statement (i.e. require it to be reopened in the
>>>> next
>>>> >> statement that would use another partition
>>>> >
>>>> >
>>>> > Yes, it does that, handling statements with the specified 'PARTITION'
>>>> > option.
>>>> > The patch supposed to solve the problem when there are too many
>>>> partitions
>>>> > opened,
>>>> > so i think it must close the unused partitions sometime.
>>>> > No, it doesn't have to happen that often. I planned to check the
>>>> > table_open_cache
>>>> > variable before the forced close. But decided not to do that
>>>> initially - as
>>>> > it simplified testing,
>>>> > and i thought if someone uses the PARTITION option, he would stick to
>>>> using
>>>> > this partition
>>>> > anyway. And  i forgot about that issue.
>>>>
>>>> The reason for not closing partitions in this case is that it turns
>>>> the 'SELECT col FROM t PARTITION(p)' almost into a 'FLUSH TABLES t'
>>>> which is kind of unexpected.
>>>> I did a test mixing PK selects with and without 'PARTITION (p)' clause
>>>> and that shows it will close all but 1 partition and then (re)open all
>>>> but 1 partition.
>>>>
>>>> Think of the case when a server runs in production with a heavily
>>>> partitioned table serving simple PK queries and then someone runs a
>>>> query with explicit PARTITION selection, then it will introduce a
>>>> short stall. First for the query itself (closing all but 1 partitions)
>>>> and then for the next simple PK query using the same table (opening
>>>> all but 1 partition).
>>>>
>>>> As I read the bug report: the reporter wants to avoid opening all
>>>> partitions. Not that it keeps the partitions open in the table open
>>>> cache (which is an issue on the architectural level of partitioning
>>>> not really fitting into the open table cache).
>>>>
>>>> I attached a diff with the test and results (I also added handler
>>>> status variables to show my point). The diff is against
>>>> b4a2baffa82e5c07b96a1c752228560dcac1359b.
>>>>
>>>> Here is the part of the result file that shows what I mean with extra
>>>> comments prepended by MJ>:
>>>> CREATE TABLE t1 (a int PRIMARY KEY)
>>>> ENGINE = InnoDB
>>>> PARTITION BY HASH (a) PARTITIONS 1000;
>>>> INSERT INTO t1 VALUES (0), (1), (2), (3);
>>>> FLUSH STATUS;
>>>>
>>>> SELECT a FROM t1 PARTITION(p0) WHERE a = 0;
>>>> a
>>>> 0
>>>> SHOW SESSION STATUS
>>>> WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
>>>> Variable_name   Value
>>>> MJ> Here it closes all but one partitions.
>>>> Handler_close   999
>>>>
>>>> SELECT a FROM t1 WHERE a = 0;
>>>> a
>>>> 0
>>>> SHOW SESSION STATUS
>>>> WHERE VARIABLE_NAME LIKE 'HANDLER_%' AND VALUE > 0;
>>>> Variable_name   Value
>>>> Handler_close   1000
>>>> Handler_external_lock   2006
>>>> MJ> and here it re-opens those 'all but one' partitions.
>>>> Handler_open    999
>>>>
>>>>
>>>> Regards
>>>> Mattias
>>>> >
>>>> >
>>>> > Best regards.
>>>> > HF
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > 13.04.2018 19:07, Mattias Jonsson wrote:
>>>> >>
>>>> >> Hi MariaDB Devs,
>>>> >>
>>>> >> I tried to evaluate spider engine and found an issue where it
>>>> crashes,
>>>> >> most likely due to MDEV-11084 (Stacktrace and reproducible test case
>>>> >> attached).
>>>> >>
>>>> >> That also leads me to wonder about the performance for partitioned
>>>> >> tables after MDEV-11084, when it seems to close partitions whenever
>>>> it
>>>> >> is not used in a statement (i.e. require it to be reopened in the
>>>> next
>>>> >> statement that would use another partition, effectively not using the
>>>> >> open table cache).
>>>> >>
>>>> >> I cannot see anything mentioned in the final commit message hinting
>>>> on
>>>> >> that it closes partitions not used in the current query, but in the
>>>> >> previous patches it was mentioned without any reason.
>>>> >>
>>>> >> Why does it close the already opened partitions?
>>>> >> https://github.com/MariaDB/server/blob/10.3/sql/ha_partition
>>>> .cc#L8365
>>>> >>
>>>> >> I would not mind opening the partitions only when they are to be used
>>>> >> (even though there are engines that need to be tested more), but
>>>> >> closing them makes no sense to me performance wise. Also notice that
>>>> >> the partitions first will be put back into the open table cache and
>>>> >> then on the next query the non-used partitions will be closed and the
>>>> >> needed ones be (re)-opened.
>>>> >>
>>>> >> Regards
>>>> >> Mattias Jonsson
>>>> >
>>>> >
>>>> >
>>>> >
>>>>
>>>
>>>
>>
>
>
> --
> Mattias Jonsson
> IT Team Lead - Development
>
> Booking.com B.V.
> Herengracht 597 Amsterdam 1017 CE Netherlands
> <https://maps.google.com/?q=Herengracht+597+Amsterdam+1017+CE+Netherlands&entry=gmail&source=g>
> Direct +31207125646
> [image: Booking.com] <http://www.booking.com/>
> The world's #1 accommodation site
> 43 languages, 198+ offices worldwide, 120,000+ global destinations,
> 1,550,000+ room nights booked every day
> No booking fees, best price always guaranteed
> Subsidiary of Booking Holdings Inc. (NASDAQ: BKNG)
>
>
>


-- 
Mattias Jonsson
IT Team Lead - Development

Booking.com B.V.
Herengracht 597 Amsterdam 1017 CE Netherlands
Direct +31207125646
[image: Booking.com] <http://www.booking.com/>
The world's #1 accommodation site
43 languages, 198+ offices worldwide, 120,000+ global destinations,
1,550,000+ room nights booked every day
No booking fees, best price always guaranteed
Subsidiary of Booking Holdings Inc. (NASDAQ: BKNG)
_______________________________________________
Mailing list: https://launchpad.net/~maria-developers
Post to     : maria-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~maria-developers
More help   : https://help.launchpad.net/ListHelp

Reply via email to