Comparação de agrupamentos de SQL para agrupamentos de Windows

Traduções de Artigos Traduções de Artigos
Artigo: 322112 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

No Microsoft SQL Server 2000 e no Microsoft SQL Server 2005, "agrupamento" Especifica como cadeias são comparadas e ordenadas e o carácter conjunto é utilizado para dados não-Unicode. SQL Server 2000 suporta dois tipos de agrupamentos:
  • Agrupamentos de SQL
  • Agrupamentos de Windows
Para obter uma descrição de cada tipo de agrupamento e uma descrição geral sobre boa como decidir qual agrupamento para utilizar, consulte o tópico "Agrupamentos seleccionar" no SQL Server 2000 Books Online ou consulte o tópico "Tipos de agrupamento" no SQL Server 2005 Books Online.

Este artigo aborda considerações adicionais que poderão afectar a sua decisão sobre se deve utilizar uma collation Windows ou um agrupamento SQL quando instala o SQL Server 2000 ou SQL Server 2005.

Mais Informação

Semântica de agrupamento

Para uma collation Windows, uma comparação de dados não Unicode é implementada utilizando o mesmo algoritmo como dados Unicode. Unicode e não-Unicode ordenação são compatíveis com regras de comparação de cadeia numa determinada versão do Windows. Isto fornece consistência entre tipos de dados no SQL Server. Também permite que os programadores que utilizam a função de API do Win32 CompareString para ordenar cadeias na respectiva aplicação utilizando as mesmas regras do SQL Server utiliza.

No agrupamento de SQL, SQL Server define semântica de comparação diferentes para dados não-Unicode. SQL Server baseia estes semântica de comparação num SQL "ordem de ordenação". Para um mapeamento de sequências de ordenação para agrupamentos de SQL, consulte o tópico "Nome do agrupamento SQL" no SQL Server Books Online.

Regras de um agrupamento de SQL para ordenar dados não Unicode são incompatíveis com qualquer rotina de ordenação que é fornecida pelo Microsoft Windows sistema operativo; no entanto, a ordenação dos dados Unicode é compatível com uma determinada versão do Windows as regras de ordenação. Uma vez que as regras de comparação para não-Unicode e dados Unicode são diferentes, quando utiliza um agrupamento SQL poderá ver resultados diferentes para as comparações dos mesmos caracteres, dependendo do tipo de dados subjacente. Por exemplo, se estiver a utilizar o SQL collation "SQL_Latin1_General_CP1_CI_AS", a cadeia de não-Unicode 'a-c' é inferior a cadeia 'ab' uma vez que o hífen ("-") é ordenado como um carácter diferente que vem antes "b". No entanto, se converter estas cadeias de caracteres para Unicode e efectuar a comparação mesma, a cadeia Unicode N'a-c 'é considerada superior N'ab' uma vez que a ordenação Unicode regras a utilizar um "tipo de palavra" que ignora o hífen.

Desempenho de comparação de cadeia

As regras de ordenação Unicode são muito mais complexas do que as regras para uma sequência de ordenação não-Unicode SQL. Quando o SQL Server compara dados Unicode, os caracteres são atribuídos um peso é modificado de forma dinâmica com base na região do agrupamento. Os dados é também modificados por comparação definições de estilo como largura, destaque ou sensibilidade de kana. As rotinas de ordenação Unicode suportam mais inteligentes comportamentos de ordenação como ordenar palavra.

Além disso, porque as rotinas devem processar dados Unicode, são suficientemente flexíveis para processar a ordenação e a comparação de vários caracteres distintos milhares, em vez de no máximo 255 caracteres que podem suportar a maior parte das sequências de ordenação do SQL Server. Por estes motivos, cadeia simples comparação trabalho que utiliza o Unicode regras de ordenação é normalmente mais dispendioso em termos de tempo e ciclos da CPU do que uma comparação de cadeia semelhante que utiliza uma sequência de ordenação não-Unicode SQL.

O que isto significa para as combinações possíveis de tipos de dados e tipos de agrupamento no SQL Server:
  • Se estiver a armazenar e processar os dados utilizando tipos de dados não-Unicode ( char , varchar , texto ) e estiver a utilizar um agrupamento de SQL, serão efectuadas comparações de cadeias com uma sequência de ordenação não-Unicode SQL.
  • Se estiver a armazenar e processar os dados utilizando tipos de dados não-Unicode ( char , varchar , texto ) e estiver a utilizar uma collation Windows, serão efectuadas comparações de cadeias com as regras de ordenação Unicode. Isto pode causar determinadas operações que são dependentes invulgarmente cadeia ordenação desempenho demore mais tempo e a utilização de CPU mais do que uma operação semelhante que é executada com um SQL collation.
  • Se estiver a utilizar tipos de dados Unicode ( nchar , nvarchar , ntext ), não existe qualquer diferença entre o comportamento de ordenação para o SQL e as collations Windows. Ambos irão utilizar as regras de ordenação Unicode.
Geralmente, o grau de diferença de desempenho entre o Windows e as collations SQL não é significativo. A diferença só aparece se uma carga de trabalho está vinculado a CPU, em vez de ficar restringida por E/s ou por velocidade de rede e a maioria desta carga da CPU é causada por sobrecarga de manipulação de cadeia ou comparações efectuadas no SQL Server. Um exemplo de uma aplicação em que a diferença de desempenho poderá ser pronunciada é um sistema em que uma aplicação alojadora transfere um valor de cadeia longa de um procedimento armazenado do SQL Server. O procedimento armazenado, em seguida, analisa a cadeia através da utilização extensiva de funções de manipulação de cadeia de Transact-SQL como CHARINDEX ou PATINDEX. Se a carga de trabalho é bastante unidimensional e é dominated por execuções desta cadeia de analisar o procedimento armazenado, a diferença no desempenho entre um agrupamento de SQL e uma collation Windows poderá estar visível. No entanto, a estrutura da maioria das aplicações não levar para uma situação em que a diferença de desempenho é significativa.

Recomendações

  1. Collations SQL são fornecidos para retro-compatibilidade com versões anteriores do SQL Server. Windows collations fornecem comparações de cadeias consistente para ambos os Unicode e para o texto não Unicode no SQL Server que também são consistentes com comparações de cadeias no sistema operativo Windows. Por estes motivos, o Windows agrupamentos são preferidos a menos que existam problemas de compatibilidade com versões anteriores ou problemas de desempenho específicos que requerem um SQL collation.
  2. Se estiver a planear um agrupamento SQL baseado apenas nas características de desempenho de um agrupamento de SQL, apercebe-se que o desempenho da maioria das aplicações não significativamente beneficiar de uma alteração no agrupamento. Certifique-se de que tiver isolado consultas que mostram uma vantagem de um agrupamento de SQL. Assim que identificar as consultas afectadas, considere as seguintes alternativas a uma alteração no agrupamento. Ambas estas alternativas podem fornecer uma vantagem de desempenho é maior que o que verá se alterar a collation instância para um agrupamento de SQL:
    1. Se a sobrecarga para as Windows collations é rastreada rotinas do Transact-SQL que efectuam a manipulação da cadeia explícitas ou analisar e se estiver a utilizar tipos de dados não-Unicode, poderá especificar um agrupamento SQL ou uma collation Windows binária para a operação que é executado frequentemente e que é mais dispendiosa. Suponha que utiliza a função PATINDEX para determinar se uma coluna de texto numa tabela contém o carácter "x". Se forçar um agrupamento de SQL para essa operação de comparação específico e continuar a utilizar o Windows collation para os restantes a base de dados e a aplicação, não é necessário alterar a collation para todo o sistema:
      SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
    2. Se a sobrecarga para as Windows collations é rastreada a mais mundano consultas que não utilizam as funções de manipulação de cadeia complexa, índice melhorado ou consulta estruturas podem fornecer melhoramentos dwarf os veria alterando para um agrupamento de SQL. Uma consulta que pode ser atendida por muito selectivo procura no índices adequados não será sensíveis à pequenas alterações no custo de comparação de cadeia. Em contrapartida, uma pequena quantidade de sobrecarga por comparação de cadeias pode adicionar rapidamente numa consulta que tem de efectuar uma pesquisa da tabela e comparar um valor específico para cada um dos milhões de linhas. Se impedir tabela grande ou índice de pesquisa o plano de consulta, alterando a indexação ou a própria consulta, a consulta irá efectuar mais rapidamente do que se alterar para um agrupamento de SQL.
Nota Existe um terceiro tipo de collation que é uma variante de um SQL collation. Este agrupamento terceiro é conhecido como "collation de compatibilidade" ou uma "collation obsolescent". Um agrupamento de compatibilidade é um conjunto de regras de ordenação e comparação que não tenham um nome de agrupamento predefinida no SQL Server 2000. Por exemplo, se configurou SQL Server 7.0 com uma definição inconsistente distinção entre maiúsculas e minúsculas para Unicode e para os dados não-Unicode, terá um agrupamento de compatibilidade quando actualiza esta instância do SQL Server 7.0 para o SQL Server 2000. Num debate neste artigo, as informações acerca de collations SQL também se aplicam a agrupamentos de compatibilidade.

Para obter mais informações acerca de collations compatibilidade, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
270042INF: Descrição dos agrupamentos de compatibilidade do SQL Server

Propriedades

Artigo: 322112 - Última revisão: 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 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
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 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: 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