Comparando agrupamentos do SQL para agrupamentos do Windows

Traduções deste artigo Traduções deste artigo
ID do artigo: 322112 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

No Microsoft SQL Server 2000 e no Microsoft SQL Server 2005, um "agrupamento" Especifica como seqüências de caracteres são comparadas e classificadas e quais caracteres conjunto é usado para dados não-Unicode. SQL Server 2000 oferece suporte a dois tipos de agrupamentos:
  • Agrupamentos do SQL
  • Agrupamentos do Windows
Para obter uma descrição de cada tipo de agrupamento e uma boa visão geral de como decidir qual agrupamento para usar, consulte o tópico "Selecionar agrupamentos" nos manuais online do SQL Server 2000, ou consulte o tópico "Tipos de agrupamento" nos manuais online do SQL Server 2005.

Este artigo aborda considerações adicionais que podem afetar sua decisão sobre se deve escolher um agrupamento do Windows ou um agrupamento SQL quando você instala o SQL Server 2000 ou SQL Server 2005.

Mais Informações

Semântica de agrupamento

Para um agrupamento do Windows, uma comparação de dados não-Unicode é implementada usando o mesmo algoritmo como dados Unicode. Unicode e não-Unicode classificação são compatíveis com regras de comparação de seqüência de caracteres em uma determinada versão do Windows. Isso fornece consistência em tipos de dados no SQL Server. Ele também permite que os desenvolvedores que usam a função de API do Win32 CompareString para classificar cadeias de caracteres em seus aplicativos usando as mesmas regras que usa SQL Server.

Em um agrupamento do SQL, SQL Server define semântica de comparação diferentes para dados não-Unicode. SQL Server baseia essa semântica de comparação em um SQL "ordem de classificação". Para um mapeamento de ordens de classificação para agrupamentos do SQL, consulte o tópico "Nome de agrupamento SQL" nos manuais online do SQL Server.

Regras de um agrupamento SQL para classificar os dados não-Unicode são incompatíveis com qualquer rotina de classificação é fornecida pelo Microsoft Windows sistema operacional; no entanto, a classificação de dados Unicode é compatível com uma versão específica do Windows regras de classificação. Porque as regras de comparação para não-Unicode e dados Unicode são diferentes, quando você usa um agrupamento SQL você pode ver diferentes resultados para comparações dos mesmos caracteres, dependendo do tipo dados subjacente. Por exemplo, se você estiver usando o SQL agrupamento "SQL_Latin1_General_CP1_CI_AS", a seqüência não-Unicode 'uma c' é menor que a seqüência de caracteres 'ab' porque o hífen ("-") é classificada como um caractere separado que vem antes do "b". No entanto, se você converter essas cadeias de caracteres para Unicode e você executa a comparação mesma, a seqüência Unicode N'a-c 'é considerada maior N'ab' porque a classificação Unicode regras usar uma "palavra" que ignora o hífen.

Desempenho de comparação de seqüência de caracteres

Regras de classificação Unicode são muito mais complexas do que as regras para uma ordem de classificação não-Unicode SQL. Quando o SQL Server compara os dados Unicode, os caracteres são atribuídos a um peso é modificado dinamicamente com base na localidade do agrupamento. Os dados também são modificados por comparação configurações de estilo, como largura, ênfase ou sensibilidade kana. As rotinas de classificação Unicode oferece suporte a comportamentos de classificação mais inteligentes como palavra classificação.

Além disso, como as rotinas devem lidar com dados Unicode, eles são flexíveis o suficiente para lidar com a classificação e a comparação de vários caracteres distintos milhares, em vez do máximo de 255 caracteres que podem manipular a maioria das ordens de classificação do SQL Server. Por esses motivos, o trabalho de comparação de seqüência de caracteres não processados que usa o Unicode regras de classificação é normalmente mais caro em termos de tempo e ciclos de CPU que uma comparação de seqüência de caracteres semelhante que utiliza uma ordem de classificação não-Unicode SQL.

O que isso significa para as combinações possíveis de tipos de dados e tipos de agrupamento no SQL Server:
  • Se você armazenar e manipular os dados usando tipos de dados não-Unicode ( char , varchar , texto ) e você estiver usando um agrupamento SQL, comparações de seqüência de caracteres serão executadas com uma ordem de classificação não-Unicode SQL.
  • Se você armazenar e manipular os dados usando tipos de dados não-Unicode ( char , varchar , texto ) e você estiver usando um agrupamento do Windows, as comparações de seqüência de caracteres serão executadas com as regras de classificação Unicode. Isso pode causar determinadas operações que são dependentes excepcionalmente seqüência de classificação de desempenho para levar mais tempo e usar a CPU mais que uma operação similar é executada com um SQL agrupamento.
  • Se você estiver usando tipos de dados Unicode ( nchar , nvarchar , ntext ), não há nenhuma diferença no comportamento de classificação para o SQL e os agrupamentos do Windows. Ambos usará regras de classificação Unicode.
Geralmente, o grau de diferença desempenho entre os agrupamentos do SQL e o Windows não poderá ser significativo. A diferença só aparece se uma carga de trabalho é vinculada à CPU, em vez de ser restrita por E/s ou por velocidade da rede e a maioria dessa carga de CPU é causada pela sobrecarga de manipulação de seqüência de caracteres ou comparações executadas no SQL Server. Um exemplo de um aplicativo no qual a diferença de desempenho pode ser Pronunciada é um sistema onde um aplicativo passa um valor de seqüência de caracteres longo para um procedimento armazenado do SQL Server. O procedimento armazenado, em seguida, analisa a seqüência de caracteres através do uso extensivo de funções de manipulação de seqüência de caracteres Transact-SQL como CHARINDEX ou PATINDEX. Se a carga de trabalho é bastante unidimensional e é dominado por execuções dessa seqüência analisar procedimento armazenado, a diferença no desempenho entre um agrupamento SQL e um agrupamento do Windows pode ser considerável. No entanto, o design da maioria dos aplicativos não levar a uma situação onde a diferença de desempenho é significativa.

Recomendações

  1. Agrupamentos do SQL são fornecidos para compatibilidade com versões anteriores do SQL Server. Agrupamentos do Windows fornecem comparações de seqüência de caracteres consistente para os dois Unicode e para texto não-Unicode no SQL Server que também são consistentes com as comparações de seqüência de caracteres no sistema operacional Windows. Por esses motivos, agrupamentos do Windows são preferíveis a menos que haja problemas de compatibilidade com versões anteriores ou problemas de desempenho específicos que exigem um SQL agrupamento.
  2. Se você estiver pretendendo um agrupamento SQL com base apenas nas características de desempenho de um agrupamento SQL, perceba que o desempenho da maioria dos aplicativos não se beneficiar significativamente de uma alteração no agrupamento. Certifique-se de que tenha isolado consultas que mostram um benefício de um agrupamento SQL. Assim que identificar as consultas afetadas, considere as seguintes alternativas a uma alteração no agrupamento. Ambas essas alternativas podem fornecer um benefício de desempenho que é maior que o que você verá se você alterar o agrupamento de instância para um agrupamento SQL:
    1. Se a sobrecarga para os agrupamentos do Windows é rastreada para rotinas de Transact-SQL que executam a manipulação de seqüência explícita ou análise, e se você estiver usando tipos de dados não-Unicode, você pode querer especificar um agrupamento SQL ou um agrupamento binário do Windows para a operação que é executado com freqüência e que é mais cara. Suponha que você use a função PATINDEX para determinar se uma coluna de texto em uma tabela contém o caractere "x". Se você forçar um agrupamento SQL para essa operação de comparação específica e você continuar a usar um Windows agrupamento para o restante do banco de dados e o aplicativo, você não precisa alterar o agrupamento para todo o sistema:
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Se a sobrecarga para os agrupamentos do Windows é rastreada para consultas mais comuns que não usam funções de manipulação de seqüência complexa, índice aprimorado ou consulta designs podem fornecer melhorias dwarf aqueles você veria alterando para um agrupamento SQL. Uma consulta que pode ser atendida por altamente seletiva buscas em índices apropriados não será confidenciais pequenas alterações no custo de comparação de seqüência de caracteres. Por outro lado, uma pequena quantidade de sobrecarga por comparação de seqüência de caracteres pode adicionar rapidamente de uma consulta que deve executar uma verificação de tabela e comparar um valor específico para cada um dos milhões de linhas. Se você impede grande tabela ou índice as verificações no plano de consulta, alterando a própria consulta ou a indexação, sua consulta executará muito mais rápido do que se você alterar para um agrupamento SQL.
Observação Há um terceiro tipo de agrupamento é uma variação de um SQL agrupamento. Este agrupamento terceiro é conhecido como um "agrupamento de compatibilidade" ou "agrupamento obsolescent". Um agrupamento de compatibilidade é um conjunto de regras de classificação e comparação que não precisam ter um nome de agrupamento predefinido no SQL Server 2000. Por exemplo, se você configurar SQL Server 7.0 com uma configuração de diferenciação de maiúsculas e minúsculas inconsistente para Unicode e dados não-Unicode, você terá um agrupamento de compatibilidade ao atualizar esta instância do SQL Server 7.0 para SQL Server 2000. Na discussão neste artigo, as informações sobre agrupamentos do SQL também se aplica a agrupamentos de compatibilidade.

Para obter mais informações sobre compatibilidade agrupamentos, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
270042INF: Descrição de agrupamentos de compatibilidade do SQL Server

Propriedades

ID do artigo: 322112 - Última revisão: terça-feira, 13 de dezembro de 2005 - Revisão: 8.1
A informação contida neste artigo aplica-se a:
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Workgroup Edition
Palavras-chave: 
kbmt kbhowto kbinfo KB322112 KbMtpt
Tradução automática
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 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: 322112

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com