O que é o formato de ficheiro DB-JOURNAL?
Arquivos com a extensão .db-journal contêm as imagens de página necessárias para a recuperação de um banco de dados SQLite em caso de falha na transação. Estes são arquivos temporários criados pelo SQLite no mesmo diretório onde o banco de dados está armazenado. Eles não devem ser visíveis após a conclusão da transação, pois o SQLite os exclui automaticamente no COMMIT ou ROLLBACK.
Graças aos arquivos de journal de rollback de transação com a extensão .db-journal, é possível garantir a atomicidade das transações no banco de dados. Um aplicativo operando em dados de banco de dados que falha no meio da transação não deixará operações incompletas - elas serão revertidas para o estado anterior ao início da transação. Um arquivo .db-journal está presente no disco:
- durante a execução de uma transação de gravação (modo de journal DELETE, o padrão do SQLite),
- quando uma transação foi interrompida por uma falha - até que a próxima conexão abra o banco de dados,
- quando o banco de dados está em modo de bloqueio exclusivo (
PRAGMA locking_mode=EXCLUSIVE) - até que seja desligado.
O SQLite pode usar vários arquivos auxiliares temporários diferentes para garantir a coerência e a segurança das operações do banco de dados. .db-journal é o journal de rollback clássico; .db-wal e .db-shm servem ao papel equivalente no modo WAL (Write-Ahead Log) mais recente.
Nomenclatura do arquivo .db-journal
O arquivo de journal é nomeado anexando -journal ao nome completo do arquivo do banco de dados. Por exemplo, se o banco de dados for salvo como baza.db, o arquivo temporário será nomeado baza.db-journal e armazenado no mesmo diretório. Arquivos temporários normalmente não são visíveis para os usuários. Em caso de falha ou queda de energia, o journal permanece no diretório até a próxima vez que o banco de dados for aberto - o SQLite então detecta o «hot journal», reproduz as imagens de página salvas para restaurar o estado pré-transação e exclui o journal automaticamente.
Você nunca deve excluir um arquivo .db-journal enquanto uma transação de gravação estiver em andamento, pois isso corromperá o banco de dados. Um .db-journal persistente após um encerramento limpo quase sempre indica uma falha anterior; o SQLite lida com a recuperação com segurança na próxima abertura. No modo WAL (PRAGMA journal_mode=WAL), introduzido no SQLite 3.7.0 (julho de 2010), o arquivo .db-journal não é usado - um arquivo .db-wal assume seu papel. A maioria dos bancos de dados de aplicativos modernos mudou para o modo WAL para melhorar a concorrência de leitura.
Segurança e proteção
RISCO: LOWNão executável; dados binários de recuperação de falhas. Excluir um -journal enquanto o banco de dados está sendo gravado corromperá o banco de dados - o principal risco operacional. Journals remanescentes de falhas são seguros para serem deixados até que o SQLite os recupere automaticamente. Um -journal pode conter dados confidenciais não confirmados da transação interrompida (gravações parciais de mensagens, credenciais, etc.); trate com a mesma confidencialidade do banco de dados principal. Não abra ou distribua um -journal isoladamente sem o banco de dados pai.
Detalhes do formato
em resumoProgramas que abrem arquivos DB-JOURNAL
Detalhes técnicos
especificação profunda| Tipo de formato | Journal de rollback de transação temporário binário (arquivo auxiliar SQLite) |
| Magic bytes | Cabeçalho de 8 bytes: 0xD9 0xD5 0x05 0xF9 0x20 0xA1 0x63 0xD7 (hot/persistent journal) |
| Ordem dos bytes | Big-endian (campos de cabeçalho do journal armazenados em network byte order) |
| Tamanho do cabeçalho do journal | 28 bytes (campos de contagem de páginas, nonce aleatório, tamanho do setor, tamanho da página) |
| Codificação | Binário - armazena imagens de página de banco de dados SQLite 3 literais copiadas antes da modificação |
| Checksum por página | Dois inteiros de 32 bits computados a partir do nonce e dos dados da página; uma divergência sinaliza um journal obsoleto ou incompleto |
| Tamanho típico do arquivo | 0 bytes a centenas de MB, dependendo de quantas páginas a transação abortada afetou |
| Modo de journal | Usado apenas no modo de journal DELETE (padrão do SQLite); não é criado no modo WAL |
| Convenção de nomenclatura | Caminho do banco de dados principal com -journal anexado (ex: mydata.db → mydata.db-journal) |
| Mecanismo de recuperação | O SQLite detecta um hot journal ao abrir a conexão, reproduz as imagens das páginas para restaurar o estado pré-transação e, em seguida, exclui o journal |
| Sucessão pelo WAL | O modo WAL (.db-wal + .db-shm), introduzido no SQLite 3.7.0 (julho de 2010), é preferido para cargas de trabalho simultâneas e não utiliza o arquivo .db-journal |
| Lançado | SQLite 1.0, 2000 (rollback journal is the original journaling mechanism) |
| Versão mais recente | SQLite 3.x current - format unchanged since early SQLite 3; superseded in practice by WAL (-wal) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | www.sqlite.org |
Conversões de DB-JOURNAL
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos DB-JOURNAL.