He Zhenxing wrote:
> Mats Kindahl wrote:
>> He Zhenxing wrote:
>>> Hi Mats
>>>
>>> I found that there is no ha_start/end_bulk_* functions for update and
>>> delete as insert, and the default implementation for start_bulk_delete
>>> will fail the server in debug mode, so now I'd rather not to include
>>> these function calls.
>> Strange. OK, let's not include it then. I'll make a note to look up why there is
>> a failure.
>>
>
> OK, then do you approve this patch?
Yes.
/Matz
>
>> Best wishes,
>> Mats Kindahl
>>
>>> Mats Kindahl wrote:
>>>> Hi Jason!
>>>>
>>>> The patch looks good, but I would suggest to add a call to
> start_bulk_delete()
>>>> and start_bulk_update() at the appropriate places. They don't take an
> argument,
>>>> so there is nothing to compute for that.
>>>>
>>>> Just my few cents,
>>>> Mats Kindahl
>>>>
>>>> He Zhenxing wrote:
>>>>> #At file:///media/sda3/work/mysql/bzrwork/b35843/5.1-rpl/
>>>>>
>>>>> 2666 He Zhenxing 2008-09-10
>>>>> BUG#35843 Slow replication slave when using partitioned myisam
> table
>>>>>
>>>>> In order to improve the performance when replicating to
> partitioned
>>>>> myisam tables with row-based format, the number of rows of
> current
>>>>> rows log event is estimated and used to setup storage engine
> for bulk
>>>>> inserts.
>>>>> modified:
>>>>> sql/log_event.cc
>>>>>
>>>>> === modified file 'sql/log_event.cc'
>>>>> --- a/sql/log_event.cc 2008-08-06 10:41:27 +0000
>>>>> +++ b/sql/log_event.cc 2008-09-10 09:13:58 +0000
>>>>> @@ -7488,7 +7488,6 @@ Write_rows_log_event::do_before_row_oper
>>>>> */
>>>>> }
>>>>>
>>>>> - m_table->file->ha_start_bulk_insert(0);
>>>>> /*
>>>>> We need TIMESTAMP_NO_AUTO_SET otherwise ha_write_row() will not
> use fill
>>>>> any TIMESTAMP column with data from the row but instead will
> use
>>>>> @@ -7627,7 +7626,16 @@ Rows_log_event::write_row(const Relay_lo
>>>>>
>>>>> /* unpack row into table->record[0] */
>>>>> error= unpack_current_row(rli); // TODO: how to handle errors?
>>>>> -
>>>>> + if (m_curr_row == m_rows_buf)
>>>>> + {
>>>>> + /* this is the first row to be inserted, we estimate the rows
> with
>>>>> + the size of the first row and use that value to initialize
>>>>> + storage engine for bulk insertion */
>>>>> + ulong estimated_rows= (m_rows_end - m_curr_row) /
> (m_curr_row_end - m_curr_row);
>>>>> + m_table->file->ha_start_bulk_insert(estimated_rows);
>>>>> + }
>>>>> +
>>>>> +
>>>>> #ifndef DBUG_OFF
>>>>> DBUG_DUMP("record[0]", table->record[0],
> table->s->reclength);
>>>>> DBUG_PRINT_BITSET("debug", "write_set = %s",
> table->write_set);
>>>>>
>>>>>
>>>> --
>>>> MySQL Code Commits Mailing List
>>>> For list archives: http://lists.mysql.com/commits
>>>> To unsubscribe: http://lists.mysql.com/commits?unsub=1
>
--
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com