ID do artigo: 924947 - Última revisão: terça-feira, 20 de novembro de 2007 - Revisão: 2.5 SQL Server aumenta significativamente o espaço não utilizado para algumas tabelas
Nesta páginaSumárioEste artigo descreve um cenário no qual o Microsoft SQL Server aumenta significativamente o espaço não utilizado para algumas tabelas. Em seguida, o artigo descreve dois métodos a seguir que você pode usar para solucionar esse problema:
SintomasConsidere o cenário a seguir no SQL Server:
Recolher esta tabela
Observação No SQL Server 2005, você pode consultar a exibição de catálogo sys.dm_db_partition_stats para obter as informações de espaço utilizado e as informações reservadas. No SQL Server 2000, você pode consultar a tabela sysindexes para obter essas informações. CausaO SQL Server mantém dois tipos de informações armazenadas em cache para alocação de espaço na memória: cache de alocação e cache de espaço livre. O cache de alocação contém IDs de extensão para extensões recentemente alocadas para um índice específico. O cache de espaço livre contém números de página para páginas recentemente alocados de essas extensões alocadas. Ele também contém o estado das páginas. Se esses caches ficar vazios, os problemas que são descritos na seção "Sintomas" ocorrem. Esses caches ficar vazios pelos seguintes motivos:
Como ContornarPara contornar este problema, use um dos seguintes métodos:
Converter tabelas de heap em tabelas que usam os índices em clusterObservação Depois de converter as tabelas de heap para tabelas que usam os índices em cluster, você pode executar operações de manutenção de índice periodicamente para recuperar qualquer espaço que é desnecessariamente não utilizado. Por exemplo, você pode executar os seguintes comandos:
A seguir é a seqüência normal de operações que ocorrem quando você insere dados em uma tabela que possui um índice de cluster.
A seguir estão dois casos onde o problema ocorre, e o cache de alocação e o cache de espaço livre são vazias. Presume-se que o esquema da tabela permite para 100 linhas caber em uma página de dados.
Defina objetos abertos opção de configuração para um valor altoEsse problema ocorre principalmente porque o SQL Server usa todos os slots na área de memória designados com base na opção Abrir objetos . Ao enfrentar o problema descrito neste artigo, você pode definir o valor dessa opção para acomodar praticamente todas as tabelas que serão referenciadas na instância específica do SQL Server.Para determinar um valor de opção Abrir objetos impedirá que esse problema, execute essas etapas:
Não é recomendável que você altere a configuração objetos abertos em circunstâncias normais. Altere este valor somente se tiver certeza de que se você está enfrentando o problema que este artigo descreve. SituaçãoA Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a". Mais InformaçõesPor que as configurações de opção objetos abertos levam para esse problemaSempre que uma consulta faz referência a um objeto específico (tabela), o SQL Server carrega informações sobre o objeto na memória. Todos os metadados do índice tem referências para as informações de objeto SQL Server foi carregado na memória. Os caches de alocação são discutidos neste artigo estão associados com um índice específico. A opção Abrir objetos controla o número de descritores de que a instância do SQL Server pode carregar na memória.Quando o SQL Server inicia, o SQL Server atribui um conjunto específico de slots ou descritores , para manter a versão do objeto de metadados na memória. O número de slots alocados depende a edição do SQL Server e a memória que está configurada para SQL Server, conforme descrito na seção ? Sintomas ?. Todos esses slots originalmente fazem parte de uma lista livre. Um algoritmo específico é usado para atribuir slots de lista livre para os metadados do objeto. O algoritmo tem os seguintes dois modos de operação. Modo 1Depois do SQL Server for iniciado, ele usa um os descritores de memória da lista livre sempre que um novo objeto é referenciado. SQL Server continuará a usar todos os slots existentes quando ele carrega metadados sobre um objeto que é referenciado em uma consulta. Porque ainda existem slot entradas na lista livre, o SQL Server continuará a usar esses slots. Para slots existentes, SQL Server não reutilizar memória que foi usada por outro objeto.Modo 2Se um objeto está sendo recém-referenciado em uma consulta e a lista livre tornou-se vazia, o SQL Server verifica a lista de todos os objetos para determinar se há um slot podem ser removidos cujo metadados de objeto de memória existente. SQL Server deve manter os metadados do objeto no slot somente enquanto uma consulta faz referência a tabela. Quando a consulta for concluída, o SQL Server pode reutilizar o slot se uma nova consulta faz referência a uma tabela diferente.Quando os metadados do objeto é removido da memória, todos os seus metadados do índice associado também será removido. Quando esse comportamento ocorre, o SQL Server também perde o cache de alocação e o cache de espaço livre. Em seguida, quando uma consulta diferente referencia esta tabela novamente, todos os caches de alocação estão vazios. Por isso, na próxima vez que o SQL Server tenta alocar uma página, SQL Server tenta alocar uma nova extensão. Se continuar SQL Server recuperar slots que contêm metadados do objeto até que o SQL Server não é possível recuperar qualquer slots, o SQL Server aumenta o tamanho da lista de livre. ReferênciasPara obter mais informações sobre como usar o procedimento sp_configure armazenados para alterar opções de configuração, visite a seguinte site da Microsoft Developer Network (MSDN): http://msdn2.microsoft.com/en-us/library/ms188787.aspx
(http://msdn2.microsoft.com/en-us/library/ms188787.aspx)
Para obter mais informações sobre a opção Abrir objetos , visite o seguinte site da MSDN: http://msdn2.microsoft.com/en-us/library/aa196701(SQL.80).aspx
(http://msdn2.microsoft.com/en-us/library/aa196701(SQL.80).aspx)
Para obter mais informações sobre a opção de configuração de memória máxima do servidor , visite o seguinte site da MSDN: http://msdn2.microsoft.com/en-us/library/ms180797.aspx
(http://msdn2.microsoft.com/en-us/library/ms180797.aspx)
Para obter mais informações sobre a tabela e índice arquitetura no SQL Server, visite o seguinte site da MSDN: http://msdn2.microsoft.com/en-us/library/ms208356.aspx
(http://msdn2.microsoft.com/en-us/library/ms208356.aspx)
A informação contida neste artigo aplica-se a:
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 924947
(http://support.microsoft.com/kb/924947/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesObtenha Ajuda AgoraTraduções deste artigo
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Voltar para o início