[Koha-bugs] [Bug 21828] Improve efficiency of C4::Biblio::LinkBibHeadingsToAuthorities
bugzilla-daemon at bugs.koha-community.org
bugzilla-daemon at bugs.koha-community.org
Sat Sep 2 22:37:57 CEST 2023
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=21828
David Nind <david at davidnind.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Attachment #154131|0 |1
is obsolete| |
--- Comment #5 from David Nind <david at davidnind.com> ---
Created attachment 155176
-->
https://bugs.koha-community.org/bugzilla3/attachment.cgi?id=155176&action=edit
Bug 21828: build $bib_heading_fields only once per invocation
In UNIMARC instances, the run time of link_bibs_to_authorities.pl
can be reduced by up to 80% and the number of DBI calls
can be reduced by up to 90% with a very simple fix that
optimises the constructor of the C4::Heading::UNIMARC object.
Currently, the constructor resets the $bib_heading_fields hash
*in each invocation* (i.e. for every field the bibliographic
record contains), then populating it again with the results
fetched from the database! This is inefficient.
The patch/fix is trivial: we take advantage of the fact that
$bib_heading_fields is declared at the top of the
C4::Heading::UNIMARC module and is thus a package variable
that is in scope for the entire execution of the program
(more info here: https://stackoverflow.com/q/75317862).
Placing the section that generates the $bib_heading_fields
hash inside a "unless ( defined $bib_heading_fields )" code
block is enough to cause a significant reduction in the
number of "expensive" SQL SELECT queries that must be run.
Test plan:
0) Have a UNIMARC instance with some sample data (the KTD one
will do just fine for this experiment).
1) Run the following commands:
$ ktd --shell
k$ DBI_PROFILE=1 ./misc/link_bibs_to_authorities.pl -t
Observe the output from the script and the DBI profiling info.
[You may want to play with different DBI_PROFILE levels (such as
2, 4, 6, 8, etc.) to see what's going on under the hood DBI-wise,
for reference see: https://metacpan.org/pod/DBI::Profile]
2) Apply this patch.
3) Rerun the script from step 1), it should run a lot faster!
Signed-off-by: David Nind <david at davidnind.com>
--
You are receiving this mail because:
You are watching all bug changes.
More information about the Koha-bugs
mailing list