11 pontos por GN⁺ 2024-11-14 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
savvykang 2024-11-15

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.