Qual é a diferença entre a reconstrução de índice OFFLINE e ONLINE no servidor SQL?

ao reconstruir um índice, existe uma opção para on-line = OFF e on-line = ON. Eu sei que quando o modo ONLINE Está ligado, ele faz uma cópia do Índice, muda novas consultas para usá-lo, e, em seguida, reconstrói o índice original, rastreando as alterações usando versioning para ambos (corrija-me se estou errado).

Mas o que é que o SQL faz no modo desligado?

Author: esac, 2011-06-10

3 answers

No modo ONLINE, o novo índice é construído enquanto o antigo índice é acessível para leitura e escrita. qualquer atualização no antigo índice também será aplicada ao novo índice. Uma coluna de antimatéria é usada para rastrear possíveis conflitos entre as atualizações e a reconstrução (ie. apagar de uma linha que ainda não foi copiada). Ver Operações De Indexação Em Linha . Quando o processo é concluído, a tabela é bloqueada por um breve período e o novo índice substitui o antigo índice. Se o índice contiver colunas LOB, As operações ONLINE não são suportadas no servidor SQL 2005/2008 / R2.

Em Modo desligado, a tabela é bloqueada à frente para qualquer leitura ou escrita, e então o novo índice é construído a partir do antigo índice, enquanto mantém um bloqueio na mesa. Nenhuma operação de leitura ou escrita é permitida na tabela enquanto o índice está sendo reconstruído. Só quando a operação é feita é que o bloqueio na mesa é liberado e lê e escreve são permitidos novamente.

Note que no SQL Server 2012 a restrição aos LOBs foi levantado, Ver as operações de índice 'Online' para os índices que contêm colunas do LOB .

 59
Author: Remus Rusanu, 2012-07-11 10:14:08

As reconstruções de índices Online são menos intrusivas quando se trata de tabelas de bloqueio. Offline rebuilds cause heavy locking of tables which can cause significant blocking issues for things that are trying to access the database while the rebuild takes place.

" as fechaduras da tabela são aplicadas durante a operação do índice [durante uma reconstrução offline]. Uma operação de índice offline que cria, reconstrói ou descarrega um índice de XML, espacial ou agrupado, ou reconstrói ou retira um índice de XML não obstruído índice, adquire uma modificação de esquema (Sch-M) bloqueio sobre a tabela. Isso impede o acesso de todos os usuários à tabela subjacente durante a operação. Uma operação de índice offline que cria um índice não obstruído adquire um bloqueio compartilhado (S) na tabela. Isso evita atualizações para a tabela subjacente, mas permite operações de leitura, tais como declarações selecionadas."

Http://msdn.microsoft.com/en-us/library/ms188388 (V=sql.110).aspx

Além disso, as reconstruções de índices online são um a versão da empresa (ou do programador) é apenas uma funcionalidade.

 6
Author: dunos, 2011-06-10 17:37:22

As principais diferenças são:

A reconstrução do Índice OFFLINE é mais rápida do que a reconstrução ONLINE.

2) espaço Extra em disco necessário durante a reconstrução do índice online do servidor de SQL.

3) bloqueios do servidor SQL adquiridos com a reconstrução do Índice on-line do servidor SQL.

  • Este esquema de modificação bloqueia todos os outros acessos concorrentes à tabela, mas só é mantido por um período de tempo muito curto, enquanto o antigo índice é descartado e as estatísticas atualizadas.
 2
Author: Bhavin Katrodiya, 2017-03-17 12:00:57