2012-11-14 13 views
6

Czy SQLite może zarządzać równoczesnym dostępem? Używam SQLite z C/C++? Jeśli to nie obsługuje. Czy jest jakaś sugestia wspierania dostępu równoległego w SQLite?Równoczesny dostęp w SQLite

+0

Czy używane są transakcje? – Whymarrh

+0

http://stackoverflow.com/questions/4060772/sqlite3-concurrent-access – Oxi

Odpowiedz

9

Tak to jest jak dokumentacja stwierdza here:

SQLite w wersji 3.0.0 wprowadzono nowy mechanizm blokujący i kroniki zaprojektowany w celu poprawy współbieżności na SQLite w wersji 2 i zmniejszyć problem pisarz głód. Nowy mechanizm umożliwia również atomową zatwierdzanie transakcji obejmujących wiele plików baz danych.

oraz:

SQLite używa blokad POSIX doradczych w celu realizacji blokowania na Uniksie. W systemie Windows używa on wywołań LockFile(), LockFileEx() i UnlockFile() .

And here:

SQLite używa blokad systemu plików, aby upewnić się, że tylko jeden proces i połączenie z bazą danych próbuje modyfikować bazę danych na raz. Mechanizm blokowania systemu plików jest zaimplementowany w warstwie VFS i jest inny dla każdego systemu operacyjnego. SQLite zależy od tego, czy implementacja jest poprawna. Jeśli coś pójdzie nie tak i dwa lub więcej procesów będzie w stanie zapisać ten sam plik bazy danych w tym samym czasie, może to spowodować poważne uszkodzenie.