From 686623ab687cfd4aaa5b4c156faf65ee75ad4000 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Sun, 2 Apr 2017 23:58:04 +0200 Subject: Make sqlite cache size configurable Signed-off-by: Florian Pritz --- lib/App/BorgRestore/DB.pm | 8 +++++--- lib/App/BorgRestore/Settings.pm | 10 ++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) (limited to 'lib/App/BorgRestore') diff --git a/lib/App/BorgRestore/DB.pm b/lib/App/BorgRestore/DB.pm index a7c5916..e01aee2 100644 --- a/lib/App/BorgRestore/DB.pm +++ b/lib/App/BorgRestore/DB.pm @@ -12,15 +12,16 @@ use Log::Any qw($log); sub new { my $class = shift; my $db_path = shift; + my $cache_size = shift; my $self = {}; bless $self, $class; if (! -f $db_path) { - my $db = $self->open_db($db_path); + my $db = $self->open_db($db_path, $cache_size); $self->{db}->initialize_db(); } else { - $self->_open_db($db_path); + $self->_open_db($db_path, $cache_size); } return $self; @@ -29,10 +30,11 @@ sub new { sub _open_db { my $self = shift; my $dbfile = shift; + my $cache_size = shift; $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=-1024000"); + $self->{dbh}->do("PRAGMA cache_size=-".$cache_size); $self->{dbh}->do("PRAGMA strict=ON"); } diff --git a/lib/App/BorgRestore/Settings.pm b/lib/App/BorgRestore/Settings.pm index 564d0f8..eba5e9c 100644 --- a/lib/App/BorgRestore/Settings.pm +++ b/lib/App/BorgRestore/Settings.pm @@ -61,6 +61,14 @@ same string. The first regex that matches for a given file is used. This setting only affects lookups, it does not affect the creation of the database with --update-database. +=item C<$sqlite_cache_size> + +Default: 102400 + +The size of the in-memory cache of sqlite in kibibytes. This should be large +enough to fit the database so that adding new backup data does not need to use +the disk too much. + =back =head2 Example Configuration @@ -73,6 +81,7 @@ with --update-database. {regex => "^/boot", replacement => ""}, {regex => "^/", replacement => "mnt/snapshots/root/"}, ); + $sqlite_cache_size = 2097152; =head1 LICENSE @@ -86,6 +95,7 @@ our $cache_path_base = sprintf("%s/borg-restore.pl", $ENV{XDG_CACHE_HOME} // $EN our @backup_prefixes = ( {regex => "^/", replacement => ""}, ); +our $sqlite_cache_size = 102400; my @configfiles = ( sprintf("%s/borg-restore.cfg", $ENV{XDG_CONFIG_HOME} // $ENV{HOME}."/.config"), -- cgit v1.2.3-24-g4f1b