[Koha-patches] [PATCH] Bug 6019 : Perf enhancement : C4/SQLHelper.pm
Chris Cormack
chrisc at catalyst.net.nz
Thu Mar 31 04:36:11 CEST 2011
From: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
Adding Memoize::Memcached and a hashref to store columns
---
C4/SQLHelper.pm | 31 ++++++++++++++++++++++++++-----
1 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/C4/SQLHelper.pm b/C4/SQLHelper.pm
index 060b78f..2738bb9 100644
--- a/C4/SQLHelper.pm
+++ b/C4/SQLHelper.pm
@@ -27,6 +27,23 @@ 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;
@@ -44,7 +61,7 @@ BEGIN {
}
my $tablename;
-my $hash;
+my $hashref;
=head1 NAME
@@ -231,10 +248,14 @@ With
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));
+ 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
--
1.7.1
More information about the Koha-patches
mailing list