Могут ли базы данных SQLite в памяти масштабироваться одновременно? - PullRequest
6 голосов
/ 02 апреля 2010

Чтобы предотвратить очистку базы данных SQLite в памяти, необходимо использовать одно и то же соединение для доступа к базе данных. Однако при использовании того же соединения SQLite синхронизирует доступ к базе данных. Таким образом, если у меня много потоков, выполняющих чтение из базы данных в памяти, на многоядерном компьютере это происходит медленнее, чем точно такой же код, работающий с базой данных с файловой поддержкой.

Есть ли способ получить лучшее из обоих миров? То есть база данных в памяти, которая разрешает несколько одновременных обращений к базе данных?

Ответы [ 3 ]

3 голосов
/ 07 апреля 2010

Ответ - нет. Я спросил в группе пользователей SQLite и получил следующий ответ от Павла Иванова:

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

2 голосов
/ 02 апреля 2010

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

0 голосов
/ 02 апреля 2010

отсюда я понял, что ответ - да http://www.sqlite.org/faq.html#q6

...