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 em que o Microsoft SQL Server aumenta significativamente o espaço não utilizado para algumas tabelas. Em seguida, o artigo descreve os seguintes dois métodos que pode utilizar para contornar este problema:
SintomasConsidere o seguinte cenário no SQL Server:
Reduzir esta tabela
Nota No SQL Server 2005, pode consultar a vista 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, pode consultar a tabela sysindexes para obter estas informações. CausaSQL Server mantém dois tipos de informações em cache para atribuição de espaço na memória: atribuição de cache e cache de espaço livre. A cache de atribuição contém o ID de extensão para extensões recentemente atribuídas para um índice específico. A cache de espaço livre contém números de página para páginas recentemente atribuídos de estes atribuído extensões. Também contenha o estado das páginas. Se estes caches ficar vazias, os problemas que são descritos na secção "Sintomas" ocorrem. Estes caches ficar vazias pelas seguintes razões:
Como contornarPara contornar este problema, utilize um dos seguintes métodos:
Converter tabelas de pilha a tabelas que utilizam índices agrupadosNota Depois de converter as tabelas de pilha a tabelas que utilizam índices agrupados, pode efectuar as operações de manutenção do índice periodicamente para recuperar qualquer espaço não utilizado desnecessariamente. Por exemplo, pode executar os seguintes comandos:
Segue-se a sequência das operações que ocorrem quando inserir dados numa tabela que tenha um índice agrupado normal.
Seguem-se dois casos em que o problema ocorrer e a cache de atribuição e a cache de espaço livre estão vazias. Pressupõe-se que permite que de esquema a tabela para 100 linhas caber na página de dados.
Definir objectos abertos opção de configuração para um valor elevadoEste problema ocorre principalmente porque o SQL Server utiliza todas as ranhuras na área de memória designado com base na opção abrir objectos . Quando detecta o problema descrito neste artigo, pode definir o valor desta opção para acomodar quase todas as tabelas que vão ser referenciadas na instância específica do SQL Server.Para determinar um valor de opção de abrir objectos impedirá que este problema, siga estes passos:
Não recomendamos que altere a configuração de objectos abertos em circunstâncias normais. Altere este valor apenas se tiver a certeza de que tenham o problema descrito neste artigo. Ponto Da SituaçãoA Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a". Mais InformaçãoPorque é que as definições de opção objectos abertos provocar este problemaSempre que uma consulta referencia um objecto específico (tabela), o SQL Server carrega informações sobre o objecto na memória. Todos os metadados do índice tem referências para as informações de objecto do SQL Server foi carregado na memória. As caches de atribuição que são discutidas neste artigo estão associadas um índice específico. A opção abrir objectos controla o número de descritores de que a instância do SQL Server pode carregar na memória.Quando o SQL Server é iniciado, SQL Server atribui um conjunto específico de ranhuras ou descritores , mantenha a versão de memória dos metadados de objecto. O número de ranhuras atribuídos depende da edição do SQL Server e a memória que esteja configurado para o SQL Server, conforme descrito na secção ? Sintomas ?. Todas estas ranhuras originalmente fazem parte de uma lista de livres. Um algoritmo específico é utilizado para atribuir ranhuras da lista de livres para os metadados do objecto. O algoritmo tem os seguintes dois modos de operação. Modo 1Depois do SQL Server ser iniciado, utiliza dos descritores de memória da lista de livres sempre que um novo objecto é referenciado. SQL Server continua a utilizar todas as ranhuras existentes quando carrega metadados sobre um objecto que é referenciado numa consulta. Uma vez que ainda existem entradas de ranhura na lista de livres, SQL Server continua a utilizar estes ranhuras. Para ranhuras existentes, SQL Server não reutilizar memória que foi utilizada por outro objecto.Modo 2Se um objecto está a ser recentemente referenciado numa consulta e a lista de livres tornou-se vazio, SQL Server verifica a lista existente de todos os objectos para determinar se existe uma ranhura podem ser removidos cujo metadados de objecto de memória. SQL Server tem de manter os metadados do objecto na ranhura apenas enquanto uma consulta referencia a tabela. Quando essa consulta estiver concluída, SQL Server pode reutilizar a ranhura se uma nova consulta faz referência a uma tabela diferente.Quando os metadados de objecto é removido da memória, também será removido todos os respectivos metadados do índice associado. Quando este comportamento ocorre, o SQL Server também perde a cache de atribuição e a cache de espaço livre. Em seguida, quando uma consulta diferente referencia novamente esta tabela, todas as caches de atribuição estão vazias. Por conseguinte, da próxima vez que o SQL Server tenta atribuir uma página, SQL Server tenta atribuir uma nova extensão. Se continuar do SQL Server recuperar ranhuras que contenham metadados objecto até que o SQL Server não é possível recuperar quaisquer ranhuras, SQL Server aumenta o tamanho da lista de livres. ReferênciasPara obter mais informações sobre como utilizar o procedimento armazenado sp_configure para alterar opções de configuração, visite o seguinte Web 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 mais informações sobre a opção abrir objectos , visite o seguinte site da Web 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 do servidor máximo , visite o seguinte site da Web MSDN: http://msdn2.microsoft.com/en-us/library/ms180797.aspx
(http://msdn2.microsoft.com/en-us/library/ms180797.aspx)
Para mais informações sobre a arquitectura de tabela e o índice no SQL Server, visite o seguinte site da Web 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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 de Artigos
|






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


Voltar ao topo