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 / 213580
Accepted
Lopsided
Lopsided
Asked: 2018-07-31 06:12:10 +0800 CST2018-07-31 06:12:10 +0800 CST 2018-07-31 06:12:10 +0800 CST

Acabei de excluir 19.000 imagens de alta resolução de uma coluna da tabela e tenho algumas perguntas sobre o encolhimento

  • 772

Acabamos de mudar para um novo método de armazenamento de imagem para nosso aplicativo, o que significa que não precisamos mais armazenar matrizes de bytes de imagem no banco de dados.

Para esse fim, excluí (por meio de uma UPDATEdeclaração) cerca de matrizes de 19k bytes contendo imagens de alta resolução (cerca de 8 GB) de uma coluna em uma única tabela. Sem as imagens, não espero que o banco de dados volte ao tamanho que tem agora. Novamente, observe que não excluí linhas aqui, mas apenas defini valores de campo como NULL.

Outras informações:

  • O tipo de coluna era VARBINARY
  • Não havia índice na coluna.

Perguntas

  1. Devo apenas ir em frente e reduzir o banco de dados e, em seguida, reconstruir os índices para essa tabela?
  2. A maioria dos cenários que li envolve encolher após uma DELETEdeclaração. Não excluí nenhuma linha, apenas defini o valor do campo como null para todas as linhas. Isso muda alguma coisa?
  3. A coluna agora está obsoleta e podemos apenas excluí-la da tabela; Acredito que isso exigirá que a tabela seja recriada. Devo reduzir o banco de dados antes ou depois de excluir a coluna?

Edit: Outra possibilidade me ocorreu. Com os dados da imagem desaparecidos, talvez seja melhor apenas escrever um script para reconstruir completamente o banco de dados inteiro, sem a coluna de imagem da coluna. Pensamentos?

sql-server-2016 shrink
  • 1 1 respostas
  • 521 Views

1 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2018-07-31T08:48:03+08:002018-07-31T08:48:03+08:00

    Se o objetivo for tornar os backups menores, reduzir o(s) arquivo(s) de dados não ajudará a atingir esse objetivo neste caso, porque todas as páginas que continham esses maxdados eram páginas LOB que deveriam ser desalocadas (possivelmente exigindo uma reconstrução).

    Portanto, a menos que sua unidade esteja literalmente sem espaço, não vejo motivo para reduzir o arquivo de 8 GB, a menos que você esteja 100% confiante de que nunca aumentará esse tamanho novamente.

    Observe que, ao reduzir um arquivo de dados, você pode aumentar a fragmentação, o que pode diminuir o desempenho de leitura, afetar o uso da memória e reduzir a simultaneidade. A reação automática é reconstruir os índices, o que corrige a fragmentação, mas aumenta o tamanho do arquivo para dar espaço às novas cópias do índice. Quando a reconstrução é concluída, essas páginas são liberadas, mas o arquivo de dados não encolhe magicamente novamente, então você volta ao ponto de partida e não ganha nada.

    Se você excluir 95% dos dados, o tamanho do backup diminuirá, quer você reduza o(s) arquivo(s) MDF ou não. Um arquivo MDF é apenas um contêiner; seu tamanho não afeta o backup. Os dados reais afetam o backup. Mais precisamente, o número de páginas alocadas com quaisquer dados afeta o backup (e é por isso que uma reconstrução de tabela após uma grande exclusão pode gerar uma diferença no tamanho do backup).

    Isso é fácil de testar por si mesmo, mas lembre-se de que o impacto observado dependerá de muitas coisas, incluindo tipos de dados, fragmentação, espaço livre e uma série de outras variáveis. Basta observar o tamanho de um backup completo após cada uma dessas etapas:

    1. antes de definir os valores para NULL.
    2. depois de definir os valores para NULL(e depois de descartar a coluna, talvez).
    3. depois de reconstruir a tabela.
    4. depois de reduzir o banco de dados.

    Minha teoria é que, em quase todos os casos em que consigo pensar, não haverá diferença tangível entre o tamanho do backup após 3. e após 4.

    Uma variável diferente com a qual você pode se preocupar é o tempo necessário para restaurar esse backup em outro sistema, que dependerá do tamanho do(s) arquivo(s) MDF apenas nos seguintes casos:

    1. A inicialização instantânea do arquivo não está habilitada
    2. A unidade de destino não pode acomodar o tamanho atual

    O primeiro é fácil de corrigir, este é apenas um direito que você pode conceder à conta de serviço. O segundo também deve ser fácil de corrigir: adicione espaço em disco. Não há razão para sacrificar seu sistema primário porque seu sistema secundário é inadequado.

    • 5

relate perguntas

  • Devo reduzir o arquivo de log? [duplicado]

  • Encolher um banco de dados SQL Anywhere 12

  • Compressões versus redução de um banco de dados

  • Encolher banco de dados após remover dados extras [duplicado]

  • Encolher banco de dados após descartar tabela?

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