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 / 204180
Accepted
Alexei
Alexei
Asked: 2018-04-18 04:39:54 +0800 CST2018-04-18 04:39:54 +0800 CST 2018-04-18 04:39:54 +0800 CST

É ruim encolher + reindexar depois de remover uma parte significativa dos dados?

  • 772

Eu tenho um ambiente de teste em execução no SQL Server 2017 Express que usa apenas dados recentes (um trabalho remove dados com mais de três meses uma vez por mês).

O trabalho faz o seguinte:

  1. Usando um loop while, removeu dados com mais de três meses
  2. Encolhe o banco de dados, se seu tamanho estiver acima de algum limite
  3. Reindexa todas as tabelas

Este artigo descreve como é terrível reduzir o banco de dados devido à fragmentação do índice e por que a reindexação também requer espaço extra.

A última execução começou a partir de um banco de dados de 9 GB. A exclusão leva de 3 a 4 minutos e a reindexação leva cerca de 30 segundos. O banco de dados foi reduzido para cerca de 5 GB.

Como este é um ambiente de teste, posso arcar com esse tempo de inatividade sem problemas.

Pergunta: É ruim encolher + reindexar depois de remover uma parte significativa dos dados?

sql-server index
  • 2 2 respostas
  • 1427 Views

2 respostas

  • Voted
  1. Best Answer
    Aaron Bertrand
    2018-04-18T04:45:09+08:002018-04-18T04:45:09+08:00

    Bem, pergunte a si mesmo: qual é o objetivo de reduzir, se você sabe que a reindexação (e quaisquer outras alterações de dados, na verdade) expandirá o arquivo novamente após a redução?

    Mesmo que a reindexação não o traga de volta para 9 GB, se o banco de dados crescer no futuro, vejo valor absolutamente zero em recuperar temporariamente parte desse espaço em disco . O que você fará com esse espaço até que o banco de dados tenha que crescer novamente? Arrendar e depois despejá-los? É como um restaurante desmontando uma mesa toda vez que um cliente se levanta e sai, apenas para remontá-la quando um novo cliente chega.

    Na sua situação (onde você precisa manter o arquivo de dados abaixo de 10 GB por causa da licença que você escolheu e nenhum outro motivo), não faz sentido descer para 5 GB apenas para crescer novamente para 9 GB novamente. Eu prefiro ter algum monitor ativo que avisa quando o arquivo de dados está voltando para o espaço de 9 GB novamente (ou apenas mantenha-o em 9 GB!) e o espaço usado está se aproximando de 9 GB.

    Em vez de pensar nisso como um requisito "manter os últimos três meses", pense nisso como um requisito "manter 9 GB de dados". Que você terá que revisitar à medida que seus volumes de dados por período de tempo (dia/semana/qualquer que seja) aumentam de qualquer maneira. O que acontece quando você acumula mais de 10 GB de dados em três meses?

    • 11
  2. Del Lee
    2018-05-30T10:19:51+08:002018-05-30T10:19:51+08:00

    Como este é um ambiente de teste, por que você não pode usar o SQL 2017 Developer? Assim, você não ficará restrito ao limite de 10 GB e, portanto, menos necessidade de excluir registros.

    • 3

relate perguntas

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

  • Quanto "Padding" coloco em meus índices?

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

  • O que significa "índice" em RDBMSs? [fechado]

  • Como criar um índice condicional no MySQL?

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