CORRECÇÃO: Quando executar uma consulta que utiliza a sugestão de tabela NOLOCK no SQL Server 2005 ou do SQL Server 2008 para obter dados BLOB, a consulta é executada muito lentamente

IMPORTANTE: 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: 961049
A Microsoft distribui correcções Microsoft SQL Server 2005 como um ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova versão contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento.
A Microsoft distribui correcções Microsoft SQL Server 2008 como um ficheiro transferível. Uma vez que as correcções são cumulativas, cada nova versão contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2008 anterior corrigir lançamento.
Sintomas
Tem uma consulta que utiliza a sugestão de tabela NOLOCK no Microsoft SQL Server 2005 ou do Microsoft SQL Server 2008. A consulta lê dados de objectos grandes binários (BLOB) de um dos seguintes tipos de dados de uma tabela grande:
  • O tipo de dados de texto
  • O tipo de dados nText
  • O tipo de dados de imagem
Quando executa a consulta, a consulta é executada muito lentamente. Se examinar a actividade do disco que gera a consulta, notará que o número de leituras lógicos é elevado.

Nota Para apresentar as actividades do disco, execute a consulta utilizando a cláusula SET E/S STATISTICS ON.
Causa
Quando a consulta que utiliza a sugestão de tabela NOLOCK lê dados BLOB, SQL Server verifica que cada página BLOB é atribuída ao examinar o mapa de atribuição de índice correspondente (IAM). O IAM é uma lista ligada de páginas de atribuição. Cada página IAM pode conter aproximadamente 4 GB de dados (tamanho da página 8 KB * 8 páginas * 64.000 extensões). Se o objecto for grande, a operação de verificação poderá conduzir a excessivas leituras lógicas.

Por exemplo, ter um objecto grande mapeado para um grupo de ficheiros. O tamanho total dos ficheiros no grupo de ficheiros for 700 GB. Nesta situação, IAM para este objecto pode conter até 175 páginas. Se agora executa uma consulta neste objecto utilizando a sugestão de tabela NOLOCK e a consulta acede a páginas BLOB 10.000, o número de leituras lógicos relacionados com páginas IAM será 175 * 10.000 = 1,750,000 no pior dos casos. Se SQL Server localizar a página IAM correspondente por atravessar metade da lista ligada, o número médio de leituras lógicos relacionados com páginas IAM será aproximadamente 1,750,000 / 2 = 875,000. Esta é demasiado alto um custo para activar para uma consulta para aceder a páginas BLOB 10.000.
Resolução

Informações de actualização cumulativa para o SQL Server 2005

A correcção deste problema primeiro foi disponibilizada em 3 de actualização cumulativa para o SQL Server 2005 Service Pack 3. Para obter mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2005, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
967909Pacote de actualização cumulativa 3 para SQL Server 2005 Service Pack 3
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2005 anterior corrigir lançamento. Recomendamos que considere aplicar a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
960598Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 3

Informações de actualização cumulativa para o SQL Server 2008

A correcção deste problema primeiro foi disponibilizada em 5 de actualização cumulativa para o SQL Server 2008. Para obter mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
969531Pacote de actualização cumulativa 5 para o SQL Server 2008
Nota Uma vez que as compilações são cumulativas, cada nova versão de correcção contém todas as correcções e todas as correcções de segurança incluídas com o SQL Server 2008 anterior corrigir lançamento. Recomendamos que considere aplicar a versão de correcção mais recente que contenha esta correcção. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
956909O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008
Ponto Da Situação
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Mais Informação
A correcção para este problema utiliza a cache IAM para determinar rapidamente se uma página BLOB é realmente atribuída.

Para obter mais informações sobre os ficheiros que são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de actualização cumulativa que contém a correcção que é descrita neste artigo da base de dados de conhecimento da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
967909Pacote de actualização cumulativa 3 para SQL Server 2005 Service Pack 3
Para obter mais informações sobre os ficheiros que são alterados e para obter informações sobre quaisquer pré-requisitos para aplicar o pacote de actualização cumulativa que contém a correcção que é descrita neste artigo da base de dados de conhecimento da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
969531Pacote de actualização cumulativa 5 para o SQL Server 2008
Referências
Para obter mais informações sobre a lista de compilações disponíveis depois de SQL Server 2005 Service Pack 3, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
960598Cria o SQL Server 2005 que foram disponibilizadas após o lançamento do SQL Server 2005 Service Pack 3
Para obter mais informações sobre a lista de compilações disponíveis depois de SQL Server 2008, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
956909O SQL Server 2008 cria disponibilizadas após o lançamento do SQL Server 2008
Para obter mais informações sobre o modelo de assistência incremental para o SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
935897Um modelo de assistência incremental está disponível a equipa do SQL Server para proporcionar correcções para problemas comunicados
Para obter mais informações sobre o esquema de atribuição de nomes para as actualizações do SQL Server, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
822499Novo esquema de atribuição de nomes de ficheiros para pacotes de actualização de software do Microsoft SQL Server
Para obter mais informações sobre a terminologia de actualização de software, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 961049 - Última Revisão: 05/18/2009 23:00:42 - Revisão: 3.0

Microsoft SQL Server 2005 Developer Edition, Microsoft SQL 2005 Server Enterprise, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Web, Microsoft SQL Server 2008 Workgroup

  • kbmt kbsurveynew kbhotfixrollup kbfix kbqfe kbexpertiseadvanced KB961049 KbMtpt
Comentários