← Back to team overview

percona-discussion team mailing list archive

purge performance for innodb

 

Dimitri made a comment about purge (non) performance in Innodb. I
ignore this most of the time as my workloads don't have many deletes
-- which creates other problems from too large tables. I looked at the
code and this won't be easy to fix. Does Percona have any work in
progress?

1) trx_purge() is run once per 10 seconds by the main background IO
thread in srv0srv.c
2) trx_purge() holds kernel_mutex which is already too hot

I quickly browsed the code and I think that it scans log pages,
collects rows to purge in an array, makes a pass on the array and
deletes the rows. The last step should be the slow one because of
random IO. If we change that to make two passes on the array (issue
prefetch read for the pages on the first pass, remove the row on the
second pass) then this might be faster.

But I haven't put much time into this and I wonder if anyone else has.

-- 
Mark Callaghan
mdcallag@xxxxxxxxx



Follow ups