O que é o formato de ficheiro DB-SHM?
Um arquivo .db-shm é um arquivo de índice de memória compartilhada efêmero criado automaticamente pelo SQLite quando um banco de dados opera no modo WAL (Write-Ahead Logging). Ele existe ao lado do arquivo de banco de dados principal e de seu arquivo complementar .db-wal, formando juntos o conjunto de três arquivos que o modo WAL exige.
O arquivo tem um tamanho fixo de 32 KB e é mapeado em memória por todas as conexões SQLite que compartilham o mesmo banco de dados em modo WAL. Ele armazena cabeçalhos de índice WAL e uma tabela hash que mapeia números de quadros WAL para números de páginas do banco de dados, permitindo que os leitores localizem eficientemente a versão mais recente de cada página sem escanear todo o arquivo WAL.
Ao contrário do arquivo .db principal, o arquivo .db-shm não armazena dados do usuário e não é portátil entre arquiteturas de CPU - sua ordem de bytes (byte order) corresponde à da máquina hospedeira. O SQLite o cria automaticamente quando a primeira conexão abre um banco de dados em modo WAL e o exclui de forma limpa quando a última conexão é fechada. Um arquivo .db-shm remanescente após uma falha (crash) é seguro para exclusão, desde que o banco de dados não esteja aberto no momento; o SQLite o recria no próximo acesso.
No modo de bloqueio exclusivo, o SQLite usa a memória heap em vez disso, portanto, nenhum arquivo .db-shm é gravado no disco. O arquivo não pode ser aberto ou interpretado de forma significativa por qualquer ferramenta que não seja o próprio SQLite.
Segurança e proteção
RISCO: LOWO arquivo .db-shm em si não contém dados do usuário e não pode ser analisado de forma significativa. Não possui conteúdo executável. O arquivo de banco de dados .db associado pode conter dados pessoais sensíveis (mensagens, contatos, etc.) dependendo do aplicativo. Excluir um arquivo -shm obsoleto (quando o banco de dados está fechado) é seguro; excluí-lo enquanto o banco de dados está aberto pode causar corrupção.
Detalhes do formato
em resumoProgramas que abrem arquivos DB-SHM
Detalhes técnicos
especificação profunda| Modo SQLite necessário | Modo WAL (Write-Ahead Logging); não é criado no modo journal ou de bloqueio exclusivo |
| Tamanho do arquivo | Fixo em 32 KB (um bloco de 32 KB por região de bloqueio) |
| Ordem de bytes | Nativa da máquina hospedeira; não portátil entre arquiteturas de CPU |
| Codificação | Binário (estruturas de SO mapeadas em memória; não é um formato serializado independente) |
| Conteúdo | Cabeçalhos de índice WAL e tabela hash mapeando números de quadros WAL para números de páginas do banco de dados |
| Dados do usuário | Não armazena dados do usuário; funciona como um índice de leitura do arquivo complementar .db-wal |
| Ciclo de vida | Criado automaticamente na abertura da primeira conexão em modo WAL; excluído automaticamente no último fechamento limpo |
| Recuperação de falhas | Seguro para excluir manualmente se o banco de dados não estiver aberto; o SQLite o recria automaticamente |
| Arquivos complementares | Sempre localizado junto ao banco de dados principal .db e ao log de gravação antecipada .db-wal |
| Mecanismo de segurança contra falhas | Cabeçalho de índice WAL de cópia dupla; ambas as cópias verificadas quanto à consistência ao abrir |
| Modo de bloqueio exclusivo | O SQLite usa memória heap em vez disso; nenhum arquivo .db-shm é gravado no disco |
| Tipo MIME | application/octet-stream (sem tipo MIME dedicado) |
| Introduzido com | Modo WAL do SQLite, versão 3.7.0 (Julho de 2010) |
| Plataforma | Android, iOS, Windows, Linux, macOS |
| Lançado | 2010 (SQLite 3.7.0, WAL mode) |
| Versão mais recente | SQLite 3.x (current; format tied to WAL implementation) |
| Padrão aberto | Sim · livre de royalties |
| Especificação | www.sqlite.org |
Perguntas e Respostas da Comunidade
perguntado por usuáriosAinda não há perguntas - seja o primeiro a perguntar sobre arquivos DB-SHM.