В общем, да, если ваша база данных находится на диске, то доступ к диску будет осуществляться для выполнения любых SELECT
, если только необходимые данные не буферизуются в памяти где-либо (скорее всего, либо внутри самого SQLite, либо в кеше диска).
Но обратите внимание на фразу «, если ваша база данных находится на диске ».SQLite также поддерживает базы данных в памяти.Если у вас достаточно свободной оперативной памяти для хранения базы данных, и если вы собираетесь выполнять с ней достаточно операций, чтобы компенсировать затраты на ее копирование в память, это может стоить изучить.
Вместо настройки в вопросе вы можете:
my $dbh = DBI->connect('dbi:SQLite:dbname=:memory:');
$dbh->sqlite_backup_from_file('folder/path/file.db');
У вас будет база данных в памяти, которая является копией вашей исходной базы данных на диске, которую вы можете SELECT
использовать противк вашему сердцу, не касаясь диска (если только он не слишком большой и часть этой памяти не выгружена).
Если вы вносите какие-либо изменения в базу данных в памяти, вам также потребуется
$dbh->sqlite_backup_to_file('folder/path/file.db');
перед $dbh
отключается, если вы хотите сохранить эти изменения обратно на диск.
И имейте в виду, что это безопасно только в том случае, если никакой другой процесс не может вносить изменения во-дисковая копия одновременно с изменением копии в памяти, поскольку никто не будет знать об изменениях, внесенных в другую.