Параллелизм с SQLITE - PullRequest
       3

Параллелизм с SQLITE

2 голосов
/ 13 октября 2010

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

мы планируем подготовить все мои операторы во время запуска приложения с несколькими подключениями для чтения и одним подключением для записи. Так в основном мы создаем подключение и подготавливаем оператор в одном потоке и используем другой поток для привязкии выполнение инструкции.

Я использую C API в Windows и Linux.

  1. Создание соединения в одном потоке и использование его в другом.это создает какие-либо проблемы.
  2. если я использую «Режим общего кэша».
  3. Я думаю об использовании одной блокировки для синхронизации между чтением и записью, и между чтениями не будет никакой синхронизации.Должен ли я также синхронизировать чтение?
  4. выполняет ли одновременное множественное чтение на одном соединении
  5. выполняет одновременное множественное чтение на разных соединениях

РЕДАКТИРОВАТЬЕще один вопрос, как проверить соединение, если мы открываем соединение при запуске приложения, то же самое соединение будет использоваться до выхода из приложения, поэтому в этом процессе, как мы проверяем соединение перед использованием

Заранее спасибо

С уважением, DEE

Ответы [ 2 ]

4 голосов
/ 13 октября 2010

1) Я не думаю, что SQLite использует какие-либо данные, относящиеся к конкретным потокам, поэтому создание соединения в одном потоке и использование в другом должно быть приемлемым (говорят, что это так для версии 3.5 и выше)

2) Я не думаю, что использование режима общего кэша даст какой-либо значительный выигрыш в производительности, поэкспериментируйте и убедитесь, что для его включения в каждом потоке требуется всего один оператор

3) Вам необходимо использовать блокировку типа Single-Writer-Multiple-Reader, а простые блокировки будут сериализовать все операции чтения и записи и сводить на нет любые преимущества в производительности при использовании нескольких потоков.

4 & 5) Любая операция чтения должна работать без проблем.

1 голос
/ 15 октября 2010

SQL Lite faq подробно описывает многопоточность. Отдельные вопросы и ответы по темам Начиная с 3.3.1, при определенных условиях можно безопасно делать то, что вы говорите (см. Вопросы и ответы).

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