sqlite несколько баз данных вставить / обновить / удалить - PullRequest
1 голос
/ 02 октября 2011

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

Поиск в документации не дал однозначного ответа.Мне известно, что SQLite - не самая идеальная среда для множественных записей, поскольку база данных находится в одном файле.Но значит ли это, что несколько файлов = разные процессы записи?

databaseOne = connectToSqlite('databaseOne'); 
databaseTwo = connectToSqlite('databaseTwo');
function write()
    queryDatabaseOne("INSERT SOMETHING INTO SOME_TABLE VALUES SOME_VALUES");
    queryDatabaseTwo("INSERT SOMETHING INTO SOME_TABLE VALUES SOME_VALUES");

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

Спасибо

1 Ответ

1 голос
/ 02 октября 2011

Обычно запросы к базе данных блокируются - они не возвращаются, пока не будут завершены. Это помогает обеспечить целостность базы данных. SQLITE API блокирует.

Конечно, если у вас есть несколько баз данных, вы можете написать многопоточное приложение с неблокирующими подпрограммами, которые вызывают API-интерфейс SQLITE и затем перекрывают код, параллельно вставляя в несколько баз данных. Вы должны быть осторожны со всеми обычными вещами в многопоточном приложении - API-интерфейс SQLITE не поможет и не помешает - с дополнительным усложнением, гарантирующим, что нет возможности перекрывающегося доступа к той же базе данных.

...