Sqlite Переместить базу данных в память в C # - PullRequest
0 голосов
/ 07 июля 2019

Как я могу переместить базу данных sqlite на диск в память в C #?

Мне нужно открыть базу данных с диска в базу данных в памяти для более быстрых операций, и когда она завершит работу, сохраните ее обратно вfile.

Дисковая база данных является пустой базой данных, я хочу перенести данные из списка в базу данных памяти и использовать ее для сортировки очень больших данных, что убивает функцию List.Sort.После сортировки данных мне больше не нужна база данных.

1 Ответ

1 голос
/ 07 июля 2019

Боюсь, вы не можете сделать это . И я не рекомендую, почему бы вам просто не увеличить размер кэша?

База данных SQLite обычно хранится в одном обычном файле на диске. Однако при определенных обстоятельствах база данных может храниться в память.

Самый распространенный способ заставить базу данных SQLite существовать исключительно в Память, чтобы открыть базу данных, используя специальное имя файла:: memory:. Другими словами, вместо передачи имени файла реального диска в один из sqlite3_open (), sqlite3_open16 () или sqlite3_open_v2 () функции, передать в строку ": память:". Например:

И каждое соединение с SQlite создает отдельную новую базу данных.

rc = sqlite3_open (": memory:", & db); Когда это сделано, ни один файл на диске не открыт. Вместо этого новая база данных создается исключительно в памяти. база данных перестает существовать, как только соединение с базой данных закрывается. Every: memory: база данных отличается от всех остальных. Итак, открытие двух каждое соединение с базой данных с именем ": memory:" создаст два независимые базы данных в памяти.

Если вы собираетесь реализовать такую ​​вещь, не существует никакого официального способа сделать это! Но вы можете:

  1. Открыть новую базу данных в памяти
  2. Копировать все данные из файла базы данных в память
  3. Сравнить и объединить новые / удаленные / обновленные данные из памяти на диск

Вот код на языке C в качестве примера для открытия файла SQLite в виде in-memory:

https://www.mail-archive.com/sqlite-users@mailinglists.sqlite.org/msg15929.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...