Se você tem um aplicativo da Web que usa armazenamento local tão strongmente que causa problemas de desempenho, eu entrarei em contato com o autor do aplicativo da web e informe-os, então talvez eles possam corrigir isso.
No entanto, o SQLite tem um modo desde a versão 3.7.0 chamada logging write-ahead que usa menos operações de fsync. Como as versões mais recentes do Chrome e do Firefox usam pelo menos a versão 3.7.0 do SQLite, você pode definir o modo WAL no banco de dados de armazenamento local e persistir quando o Chrome e o Firefox começarem a usá-lo.
Você precisará do executável sqlite3 . Feche primeiro o Chrome e, em seguida, execute os seguintes comandos:
sqlite3 path/to/localstorage.sqlite
sqlite> PRAGMA journal_mode=WAL;
sqlite> .quit
(Quando você executa o comando PRAGMA
, você deve recuperar o resultado " wal
".)
Os mesmos comandos seriam usados para definir o modo WAL para o banco de dados do Firefox, substituindo webappstore.sqlite
por localstorage.sqlite
.
Para desfazer essa configuração, execute os mesmos comandos, exceto o uso PRAGMA journal_mode=DELETE;
.
Por favor, note que eu não tentei isso sozinho; Meu palpite é que ele funcionará bem, mas peço que faça backup do arquivo do banco de dados antes de tentar.
Como um aparte, os arquivos *.sqlite-journal
que você está vendo no Filemon são parte de como o SQLite realiza um commit atômico . Por padrão, o arquivo de diário existe apenas por um tempo muito curto. Ao confirmar uma alteração em um banco de dados SQLite, as seguintes ações ocorrem:
- Os dados atuais são gravados no arquivo de diário.
- Os novos dados são gravados no arquivo de banco de dados.
- O arquivo de diário é excluído.
Se o computador travar no meio da gravação do arquivo de banco de dados, o arquivo de diário será usado para recuperar o banco de dados antes que a alteração seja iniciada.