AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 345139
Accepted
M_Lyons10
M_Lyons10
Asked: 2025-02-07 03:00:23 +0800 CST2025-02-07 03:00:23 +0800 CST 2025-02-07 03:00:23 +0800 CST

Se eu substituir imagens em uma tabela, os dados BLOB existentes serão limpos e o banco de dados será reduzido?

  • 772
Esta pergunta foi migrada do Stack Overflow porque pode ser respondida no Database Administrators Stack Exchange. Migrada há 13 dias .

Atualizei recentemente uma tabela no meu banco de dados salvando pequenas imagens em miniatura em byte[]uma varbinary(max)coluna.

Isso melhorou significativamente a velocidade de carregamento de miniaturas (antes eu as carregava do sistema de arquivos), mas devido a um erro no meu código em que as imagens em miniatura estavam sendo redimensionadas, mas não compactadas, as imagens tinham cerca de 140-160 KB de tamanho e criavam uma tonelada de BLOBs. As imagens devem ter cerca de 5 ou 6 KB. Ao testar meu novo código, as imagens devem ter o tamanho correto em torno de 5 ou 6 KB.

Se eu iterar pela tabela e substituir todas as byte[]imagens na varbinary(max)coluna, isso limpará todos esses BLOBs desnecessários?

É compreensível que meu banco de dados tenha crescido significativamente como resultado do meu erro, e estou tentando fazer com que ele volte a ficar pequeno, pois seu tamanho atual está criando problemas com nossos backups.


O que eu entendi dos dados BLOB é que eles foram armazenados separadamente no banco de dados e referenciados na varbinarycélula da minha tabela, então eu não tinha certeza se eu substituísse isso se os dados BLOB associados fossem excluídos. Se eles são excluídos automaticamente, por que o banco de dados não encolheria automaticamente?

Estou testando no Dev Environment, mas depois do último erro que cometi, queria verificar novamente. Vi no SSMS que há opções para Shrinking the Database, então estou supondo que essa seria a tarefa que eu deveria executar após atualizar todos os dados da imagem. Claro que haverá muitos backups durante esse processo também. Estou apenas tentando evitar quaisquer problemas adicionais.

Tenho um banco de dados que foi feito backup de cerca de 50 MB e cresceu para cerca de 3,5 GB após meu erro. Posso substituir os dados por imagens menores, mas não parece que isso seria suficiente porque o banco de dados não encolherá automaticamente.

sql-server
  • 1 1 respostas
  • 59 Views

1 respostas

  • Voted
  1. Best Answer
    J.D.
    2025-02-07T07:29:49+08:002025-02-07T07:29:49+08:00

    Se eu substituir imagens em uma tabela, os dados BLOB existentes serão limpos e o banco de dados será reduzido?

    Sim e Não

    O espaço alocado para seu banco de dados do disco permanecerá alocado a ele. Então o tamanho geral do seu banco de dados no disco não mudará.

    Isso é por design, porque as operações de redução e crescimento são intensivas em recursos e têm efeitos colaterais como fragmentação. Presume-se que o espaço consumido anteriormente será reutilizado no futuro, então não há sentido em desperdiçar recursos para reduzi-lo automaticamente, afetando potencialmente o desempenho do seu banco de dados (durante a operação).

    O espaço alocado será substituído por novos dados à medida que o banco de dados cresce naturalmente.

    Encolhendo

    Tenho um banco de dados que foi feito backup de cerca de 50 MB e cresceu para cerca de 3,5 GB após meu erro... Estou tentando recuperá-lo

    Os backups salvam apenas páginas que estão em uso e também podem estar compactadas. Se você apagou os dados que não são mais necessários do banco de dados, os backups serão menores novamente naturalmente, apesar do tamanho do próprio banco de dados.

    Mas se você tiver que persistir com o encolhimento de qualquer maneira, então você pode usar a interface do usuário do SSMS ou seguir os documentos SHRINKpara reduzir o tamanho do banco de dados novamente. Embora isso não deva ser uma ocorrência regular e 3,5 GB seja uma quantidade minúscula de dados para se preocupar.

    Dizer o que?

    Atualizei recentemente uma tabela no meu banco de dados salvando pequenas imagens em miniatura como um byte[] em uma coluna varbinary(max). Isso melhorou significativamente a velocidade de carregamento de miniaturas (antes eu as carregava do sistema de arquivos)

    Se a velocidade de carregamento de imagens do sistema de arquivos fosse mais lenta do que carregá-las do banco de dados, que é uma abstração que também vive em um arquivo no sistema de arquivos, então você tem problemas mais estranhos que deveria estar resolvendo. Especialmente porque é um pouco antipadrão armazenar imagens no próprio banco de dados, já que elas inflacionam coisas como backups, entre outros motivos.

    • 3

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve