From 6c38cc23d95b63ae069f7cac2f7d8d97f9c941ae Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Tue, 29 Nov 2011 10:57:14 +0100 Subject: [PATCH] Bug 7276 : member entry Performance improvement MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Before this patch : 9619 borrowers added in 31 Minutes, After : 68 seconds. This adds Hashref to table structure in C4::SQLHelper to speed up bulk edits. Signed-off-by: Stéphane Delaune Signed-off-by: Chris Cormack --- C4/SQLHelper.pm | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/C4/SQLHelper.pm b/C4/SQLHelper.pm index cf425fd24a..900e40dba5 100644 --- a/C4/SQLHelper.pm +++ b/C4/SQLHelper.pm @@ -27,6 +27,22 @@ use C4::Debug; require Exporter; use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS); +eval { + my $servers = C4::Context->config('memcached_servers'); + if ($servers) { + require Memoize::Memcached; + import Memoize::Memcached qw(memoize_memcached); + + my $memcached = { + servers => [$servers], + key_prefix => C4::Context->config('memcached_namespace') || 'koha', + }; + + memoize_memcached( '_get_columns', memcached => $memcached, expire_time => 600000 ); #cache for 10 minutes + memoize_memcached( 'GetPrimaryKeys', memcached => $memcached, expire_time => 600000 ); #cache for 10 minutes + } +}; + BEGIN { # set the version for version checking $VERSION = 0.5; @@ -43,6 +59,9 @@ BEGIN { ); } +my $tablename; +my $hashref; + =head1 NAME C4::SQLHelper - Perl Module containing convenience functions for SQL Handling @@ -247,16 +266,24 @@ With =cut sub _get_columns($) { - my ($tablename)=@_; - my $dbh=C4::Context->dbh; - my $sth=$dbh->prepare_cached(qq{SHOW COLUMNS FROM $tablename }); - $sth->execute; - my $columns= $sth->fetchall_hashref(qw(Field)); + my ($tablename) = @_; + unless ( exists( $hashref->{$tablename} ) ) { + my $dbh = C4::Context->dbh; + my $sth = $dbh->prepare_cached(qq{SHOW COLUMNS FROM $tablename }); + $sth->execute; + my $columns = $sth->fetchall_hashref(qw(Field)); + $hashref->{$tablename} = $columns; + } + return $hashref->{$tablename}; } =head2 _filter_columns - _filter_columns($tablename,$research, $filtercolumns) +=over 4 + +_filter_columns($tablename,$research, $filtercolumns) + +=back Given - a tablename -- 2.39.5