From 5a0d80e685a0172500bf17dbb1e0c27037e58b0b Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Wed, 24 Jan 2018 15:03:45 +0100 Subject: Only increase sqlite cache size during update While not all operations fill the cache, --list does. However, for read operations it doesn't actually appear to help performance. Limit the large cache setting to update operations only because there it does really increase performance. Signed-off-by: Florian Pritz --- lib/App/BorgRestore/DB.pm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/App/BorgRestore') diff --git a/lib/App/BorgRestore/DB.pm b/lib/App/BorgRestore/DB.pm index 1f1427e..177df27 100644 --- a/lib/App/BorgRestore/DB.pm +++ b/lib/App/BorgRestore/DB.pm @@ -32,23 +32,26 @@ method new($class: $db_path, $cache_size) { # ensure the cache directory exists path($db_path)->parent->mkpath({mode => oct(700)}); - my $db = $self->_open_db($db_path, $cache_size); + my $db = $self->_open_db($db_path); $self->initialize_db(); } else { - $self->_open_db($db_path, $cache_size); + $self->_open_db($db_path); } $self->{cache_size} = $cache_size; return $self; } -method _open_db($dbfile, $cache_size) { +method _open_db($dbfile) { $log->debugf("Opening database at %s", $dbfile); $self->{dbh} = DBI->connect("dbi:SQLite:dbname=$dbfile","","", {RaiseError => 1, Taint => 1}); - $self->{dbh}->do("PRAGMA cache_size=-".$cache_size); $self->{dbh}->do("PRAGMA strict=ON"); } +method set_cache_size() { + $self->{dbh}->do("PRAGMA cache_size=-".$self->{cache_size}); +} + method initialize_db() { $log->debug("Creating initial database"); $self->{dbh}->do('create table `files` (`path` text, primary key (`path`)) without rowid;'); -- cgit v1.2.3-24-g4f1b