Базы данных SQLite в оперативной памяти могут масштабироваться с параллелизмом?

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

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

7
задан Kent Boogaart 2 April 2010 в 13:57
поделиться

3 ответа

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

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

3
ответ дан 7 December 2019 в 12:18
поделиться

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

0
ответ дан 7 December 2019 в 12:18
поделиться

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

2
ответ дан 7 December 2019 в 12:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: