[bind10-dev] it takes long time to IXFR

Yoshitaka Aharen aharen at jprs.co.jp
Mon Apr 1 05:22:12 UTC 2013


Hello,

On Sun, 31 Mar 2013 20:57:44 -0700
JINMEI Tatuya / 神明達哉 <jinmei at isc.org> wrote:
> According to the more detailed logs unicasted to me, the bottleneck
> seems to be "delete RR" operations.  And, in fact, I could reproduce it
> at the sqlite3 level with a sample of large zone data.  In fact, an
> sqlite3 like this took several (> 5) seconds:
> 
> sqlite> DELETE FROM records WHERE zone_id=1 AND name='example.com.' AND rdtype='NS' AND rdata='ns.example.com.';
> 
> when the records table contains several millions of records.  I
> suspected it was because this statement internally performs search for
> the records that match the condition and that should be the major
> bottleneck.
> 
> So one possible solution would be to revise the statement so the
> search part can use more efficient indexes, like this one:
> 
> sqlite> DELETE FROM records WHERE zone_id=1 AND rname='com.example.' AND rdtype='NS' AND rdata='ns.example.com.';
> 
> this should have the same effect as the previous one, and was actually
> much faster in my experiment.
> 
> I'm attaching a patch to BIND 10 so we use the latter version of
> SQLite3 statement for deleting records.  Could you try that and see if
> that makes it faster?
(sorry for unicasting without mention)

I understood the change in the patch is only data manipulation, not
database structure itself. We've applied the patch and just restarted
BIND 10.
It significantly works - typical amount of zone updates finished within
hundreds of milliseconds; it's thousands times faster.
Thank you very much for your help to investigate the problem and
creating the patch.

Thanks,

-- 
Yoshitaka Aharen <aharen at jprs.co.jp>
Japan Registry Services Co., Ltd.




More information about the bind10-dev mailing list