- Um dos equívocos mais comuns sobre o SQLite é achar que "SQLite é um banco de dados que permite apenas uma única conexão", o que acaba fazendo com que as pessoas deixem de usá-lo
- Isso é confuso (o que significa "conexão" aqui?) e também está errado em vários aspectos
- Operações de leitura (Read Operations)
- O SQLite oferece suporte completo a várias operações de leitura simultâneas
- É possível ler dados ao mesmo tempo a partir de várias “conexões”, sem que ocorram conflitos ou problemas
- Operações de escrita (Write Operations)
- O SQLite usa um bloqueio de escrita no nível do banco de dados (Write Lock) durante operações de escrita
- Ele não permite várias operações de escrita ao mesmo tempo; portanto, apenas uma “conexão” por vez pode realizar escrita
- Em geral, isso não se torna um problema porque é possível iniciar uma
IMMEDIATE TRANSACTION
- Nesse caso, o SQLite pode tentar novamente na fila para adquirir o bloqueio de escrita
- (esse método permite que a operação de escrita seja executada automaticamente quando o bloqueio de escrita for liberado)
1 comentários
https://www.sqlite.org/lockingv3.html
5.0 Gravando no arquivo de banco de dados
Para gravar no banco de dados, primeiro o processo deve adquirir um bloqueio SHARED, como descrito acima. Depois de adquirir o bloqueio SHARED, ele deve adquirir um bloqueio RESERVED. O bloqueio RESERVED sinaliza que o processo pretende gravar no banco de dados em algum momento no futuro. Apenas um processo por vez pode manter um bloqueio RESERVED. No entanto, outros processos ainda podem continuar lendo o banco de dados enquanto o bloqueio RESERVED é mantido.