2016-12-30 11 views
1

У меня есть существующая база данных в файле. Я хочу загрузить базу данных в память; потому что я делаю много запросов, и база данных не очень большая (< 50 МБ), чтобы закрепить эти запросы. Есть какой-либо способ сделать это?Загрузить существующую базу данных SQLite в память

ответ

2

50 МБ легко помещается в кеш-память ОС; вам не нужно ничего делать.

Если блокировка файла приводит к заметным накладным расходам (что маловероятно), рассмотрите возможность использования exclusive locking mode.

2

Вы можете создать RAM drive и использовать эту базу данных вместо файлов, размещенных на жестком диске/SSD. Если у вас есть безумные требования к производительности, вы можете пойти и в базу данных памяти.

Прежде чем делать какие-либо решения в области памяти: что такое «много запросов», каково ожидаемое время отклика на запрос? Скорее всего, программа базы данных не является узким местом производительности, но медленным кодом приложения или неэффективными запросами/отсутствием индексов/....

Я думаю, что SQLite не поддерживает одновременный доступ к базе данных, что приведет к большой производительности. Если запись происходит довольно редко, вы можете повысить свою производительность, сохранив копии базы данных и прочитав разные потоки разных экземпляров SQLite (никогда не пробовал это).

1

Любой из решений, предлагаемых CL и Ray, не будет работать так же хорошо, как настоящая база данных в памяти из-за простого факта издержек файловой системы (независимо от того, хранятся ли данные в кэше и/или в RAM-диске , эта мера поможет, но вы не можете полностью избавиться от файловой системы, полностью).

SQLite позволяет использовать несколько параллельных считывателей, но любая транзакция записи блокирует считыватели до тех пор, пока они не будут завершены.

SQLite позволяет только одному процессу использовать базу данных в памяти, хотя этот процесс может иметь несколько потоков.

Вы не можете загрузить (открыть) постоянную базу данных SQLite в качестве базы данных в памяти (по крайней мере, в последний раз, когда я просмотрел ее). Вам нужно будет создать вторую базу данных в памяти и прочитать из постоянной базы данных для загрузки базы данных в памяти. Но если в базе данных всего 50 МБ, это не должно быть проблемой. Существуют сторонние инструменты, которые затем позволят вам сохранить эту базу данных SQLite в памяти и впоследствии перезагрузить ее.