Filtros com parâmetros – Otimizar para partições pré-computadasParameterized Filters - Optimize for Precomputed Partitions

Partições pré-computadas são uma otimização de desempenho que pode ser usada com publicações de mesclagem filtradas.Precomputed partitions is a performance optimization that can be used with filtered merge publications. Partições pré-computadas também são um requisito para usar registros lógicos em publicações filtradas.Precomputed partitions is also a requirement for using logical records on filtered publications. Para obter mais informações sobre registros lógicos, consulte Agrupar alterações em linhas relacionadas com registros lógicos.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Quando um Assinante faz a sincronização com um Publicador, este deve avaliar os filtros do Assinante para determinar quais linhas pertencem àquele Assinante ou conjunto de dados.When a Subscriber synchronizes with a Publisher, the Publisher must evaluate the Subscriber's filters to determine which rows belong to that Subscriber's partition, or data set. Esse processo de determinação de associação de partição de alterações no Publicador para cada Assinante recebendo um conjunto de dados filtrado é referido como avaliação de partição.This process of determining partition membership of changes at the Publisher for each Subscriber receiving a filtered dataset is referred to as partition evaluation. Sem partições pré-computadas, a avaliação de partição deve ser executada para cada alteração feita em uma coluna filtrada no Publicador desde a última vez que o Agente de Mesclagem foi executado em um Assinante específico e esse processo tem de ser repetido para cada Assinante que sincroniza com o Publicador.Without precomputed partitions, partition evaluation must be performed for each change made to a filtered column at the Publisher since the last time the Merge Agent ran for a specific Subscriber, and this process has to be repeated for every Subscriber that synchronizes with the Publisher.

Entretanto, se o Publicador e o Assinante estiverem sendo executados no MicrosoftMicrosoft SQL Server 2005SQL Server 2005 ou em uma versão posterior e você pode usar partições pré-computadas, a associação de partição de todas as alterações no Publicador será pré-computada e persistirá na hora que as alterações forem feitas.However, if the Publisher and Subscriber are running on MicrosoftMicrosoft SQL Server 2005SQL Server 2005 or a later version and you use precomputed partitions, partition membership for all changes at the Publisher is precomputed and persisted at the time that the changes are made. Como resultado, quando um Assinante sincroniza com o Publicador, ele pode começar imediatamente a baixar as alterações relevantes à sua partição sem ter de passar pelo processo de avaliação de partição.As a result, when a Subscriber synchronizes with the Publisher, it can immediately start to download changes relevant to its partition without having to go through the partition evaluation process. Isso pode levar a um ganho significativo de desempenho quando a publicação tem um grande número de alterações, Assinantes ou artigos na publicação.This can lead to significant performance gains when a publication has a large number of changes, Subscribers, or articles in the publication.

Além de usar partições pré-computadas, instantâneos pré-gerados e/ou permitir que os Assinantes solicitem geração e aplicação de instantâneos na primeira vez que eles sincronizarem.In addition to using precomputed partitions, pre-generate snapshots and/or allow Subscribers to request snapshot generation and application the first time they synchronize. Use uma, ou ambas as opções, para fornecer instantâneos para publicações que usam filtros com parâmetros.Use one or both of these options to provide snapshots for publications that use parameterized filters. Se você não especificar uma dessas opções, as assinaturas serão inicializadas usando uma série de instruções SELECT e INSERT, ao invés de usar o utilitário bcp , esse processo é muito mais lento.If you do not specify one of these options, subscriptions are initialized using a series of SELECT and INSERT statements, rather than using the bcp utility; this process is much slower. Para obter mais informações, consulte Snapshots for Merge Publications with Parameterized Filters.For more information, see Snapshots for Merge Publications with Parameterized Filters.

Para usar partições pré-computadasTo use precomputed partitions

Partições de pré-computadas estão habilitadas, por padrão, em todas as publicações novas e existentes que aderem às diretrizes descritas acima.Precomputed partitions are enabled by default on all new and existing publications that adhere to the guidelines described above. A configuração pode ser alterada pelo SQL Server Management StudioSQL Server Management Studio ou programaticamente.The setting can be changed through SQL Server Management StudioSQL Server Management Studio or programmatically. Para obter mais informações, consulte Optimize Parameterized Row Filters.For more information, see Optimize Parameterized Row Filters.

Requisitos para usar partições pré-computadasRequirements for Using Precomputed Partitions

Se os seguintes requisitos forem satisfeitos, novas publicações de mesclagem serão, por padrão, criadas com as partições pré-computadas habilitadas, e as publicações existentes serão automaticamente atualizadas para usar a característica.If the following requirements are met, new merge publications are, by default, created with precomputed partitions enabled, and existing publications are automatically upgraded to use the feature. Se uma publicação não satisfizer os requisitos, ela poderá ser alterada e, então, as partições pré-computadas poderão ser habilitadas.If a publication does not meet the requirements, it can be changed, and then precomputed partitions can be enabled. Se alguns artigos satisfizerem os requisitos e outros não, considere criar duas publicações, sendo uma delas habilitada para partições pré-computadas.If some articles meet these requirements and some do not, consider creating two publications, with one enabled for precomputed partitions.

Requisitos para cláusulas de filtroRequirements for Filter Clauses

  • Quaisquer funções usadas em filtros de linha com parâmetros, como HOST_NAME() e SUSER_SNAME(), deveriam aparecer diretamente na cláusula de filtro com parâmetros e não ser aninhada dentro de uma exibição ou função dinâmica.Any functions used in parameterized row filters, such as HOST_NAME() and SUSER_SNAME(), should appear directly in the parameterized filter clause and not be nested inside of a view or dynamic function. Para obter mais informações sobre essas funções, consulte HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL) e Filtros de linha com parâmetros.For more information about these functions, see HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), and Parameterized Row Filters.

  • Os valores retornados para cada Assinante não deveriam alterar depois que a partição seja criada.The values returned for each Subscriber should not change after the partition is created. Por exemplo, se você usar HOST_NAME() em um filtro (e não substituir o valor de HOST_NAME()) não altere o nome do computador no Assinante.For example, if you use HOST_NAME() in a filter (and do not override the HOST_NAME() value) do not change the computer name at the Subscriber.

  • Filtros de junção não deveriam conter funções dinâmicas (funções como HOST_NAME() e SUSER_SNAME() que avaliam para um valor diferente dependendo do Assinante que está sincronizando).Join filters should not contain dynamic functions (functions such as HOST_NAME() and SUSER_SNAME() that evaluate to a different value depending upon the Subscriber that is synchronizing). Somente filtros de linha com parâmetros deveriam conter funções dinâmicas.Only parameterized row filters should contain dynamic functions.

  • Não podem ser usadas funções não determinísticas em uma cláusula de filtro.Nondeterministic functions cannot be used in a filter clause. Para obter mais informações sobre funções não determinísticas, consulte Deterministic and Nondeterministic Functions.For more information about nondeterministic functions, see Deterministic and Nondeterministic Functions.

  • Exibições referenciadas em cláusulas de filtro de junção ou cláusulas de filtro com parâmetros não deveriam conter funções dinâmicas.Views referenced in join filter clauses or parameterized filter clauses should not contain dynamic functions.

  • Não deveria haver nenhuma relação de filtro de junção circular na publicação.There should be no circular join filter relationships in the publication.

Agrupamento de banco de dadosDatabase Collation

  • Quando partições pré-computadas são usadas, o agrupamento do banco de dados é sempre usado ao fazer comparações, ao invés de agrupamento de tabela ou coluna.When precomputed partitions are used, the collation of the database is always used when making comparisons, rather than the collation of the table or column. Considere o cenário a seguir.Consider the following scenario:

    • Um banco de dados com um agrupamento com diferenciação de maiúsculas e minúsculas contém uma tabela com um agrupamento de diferenciação de maiúsculas e minúsculas.A database with a case-sensitive collation contains a table with a case-insensitive collation.

    • A tabela contém uma coluna ComputerName, que é comparada ao nome do host do Assinante em um filtro com parâmetros.The table contains a column ComputerName, which is compared against the host name of the Subscriber in a parameterized filter.

    • A tabela contém uma linha com o valor "MYCOMPUTER" e uma linha com o valor "mycomputer" nesta coluna.The table contains one row with the value "MYCOMPUTER" and one row with the value "mycomputer" in this column.

      Se o Assinante sincronizar com o nome de host “mycomputer”, o Assinante receberá apenas uma linha, porque a comparação é com diferenciação de maiúsculas e minúsculas (o agrupamento do banco de dados).If the Subscriber synchronizes with a host name of "mycomputer", the Subscriber receives only one row because the comparison is case-sensitive (the collation of the database). Se partições de pré-computadas não forem usadas, o Assinante receberá ambas as linhas, porque a tabela tem um agrupamento sem diferenciação de maiúsculas e minúsculas.If precomputed partitions are not used, the Subscriber receives both rows, because the table has a case-insensitive collation.

Desempenho de partições pré-computadasPerformance of Precomputed Partitions

Há um pequeno custo de desempenho com partições pré-computadas quando as alterações são carregadas do Assinante para o Publicador, mas o tempo de processamento em massa de mesclagem é gasto avaliando as partições e baixando as alterações do Publicador para o Assinante, portanto, o ganho da rede ainda pode ser significativo.There is a small performance cost with precomputed partitions when changes are uploaded from the Subscriber to the Publisher, but the bulk of merge processing time is spent evaluating partitions and downloading changes from the Publisher to the Subscriber, so the net gain can still be significant. O benefício de desempenho irá variar, dependendo do número de Assinantes, sincronizando simultaneamente e o número de atualizações por sincronização que move linhas de uma partição a outra.The performance benefit will vary, depending on the number of Subscribers synchronizing concurrently and the number of updates per synchronization that move rows from one partition to another.

Consulte tambémSee Also

Parameterized Row FiltersParameterized Row Filters