[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