Filtres paramétrés - Optimiser pour les partitions précalculéesParameterized Filters - Optimize for Precomputed Partitions

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions)

Les partitions précalculées représentent une optimisation des performances pouvant être utilisée avec les publications de fusion filtrées.Precomputed partitions is a performance optimization that can be used with filtered merge publications. Les partitions précalculées sont également une condition requise pour l'utilisation d'enregistrements logiques sur les publications filtrées.Precomputed partitions is also a requirement for using logical records on filtered publications. Pour plus d’informations sur les enregistrements logiques, consultez Regrouper les modifications apportées à des lignes connexes à l’aide d’enregistrements logiques.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Lorsqu'un abonné synchronise avec un serveur de publication, ce dernier doit évaluer les filtres de l'Abonné pour déterminer quelles lignes appartiennent à la partition, ou à l'ensemble de données de cet abonné.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. Le processus permettant de déterminer l'appartenance d'une partition aux modifications sur le serveur de publication pour chaque abonné recevant un dataset filtré est dénommé évaluation de partition.This process of determining partition membership of changes at the Publisher for each Subscriber receiving a filtered dataset is referred to as partition evaluation. Sans partitions précalculées, l'évaluation de partition doit être effectuée pour chaque modification apportée à une colonne filtrée sur le serveur de publication depuis la dernière exécution de l'Agent de fusion pour un abonné spécifique, et ce processus doit être répété pour chaque abonné synchronisant avec le serveur de publication.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.

Cependant, si le serveur de publication et l’Abonné s’exécutent sur MicrosoftMicrosoft SQL Server 2005 (9.x)SQL Server 2005 (9.x) ou version ultérieure et que vous utilisez des partitions précalculées, l’appartenance d’une partition pour toutes les modifications sur le serveur de publication est précalculée et persistante au moment où sont apportées les modifications.However, if the Publisher and Subscriber are running on MicrosoftMicrosoft SQL Server 2005 (9.x)SQL Server 2005 (9.x) 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. Il en résulte que lorsque l'Abonné synchronise avec le serveur de publication, il peut commencer immédiatement à télécharger les modifications concernant sa partition, sans avoir à passer par le processus d'évaluation de partition.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. Cela peut entraîner d'importantes améliorations en terme de performance, lorsqu'une publication comporte beaucoup de modifications, d'abonnés ou d'articles dans la publication.This can lead to significant performance gains when a publication has a large number of changes, Subscribers, or articles in the publication.

En plus d'utiliser des partitions précalculées, prégénérez des instantanés et/ou permettez aux Abonnés de demander la génération et l'application d'un instantané la première fois qu'ils se synchronisent.In addition to using precomputed partitions, pre-generate snapshots and/or allow Subscribers to request snapshot generation and application the first time they synchronize. Utilisez l'une ou l'autre de ces options ou les deux pour fournir des instantanés pour les publications qui utilisent des filtres paramétrés.Use one or both of these options to provide snapshots for publications that use parameterized filters. Si vous ne spécifiez pas une de ces options, les abonnements sont initialisés à l'aide d'une série d'instructions SELECT et INSERT au lieu d'utiliser l'utilitaire bcp , ce processus étant beaucoup plus lent.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. Pour plus d'informations, voir Snapshots for Merge Publications with Parameterized Filters.For more information, see Snapshots for Merge Publications with Parameterized Filters.

Pour utiliser les partitions précalculéesTo use precomputed partitions

Les partitions précalculées sont activées par défaut sur toutes les publications, nouvelles ou existantes, répondant aux conditions décrites ci-dessous.Precomputed partitions are enabled by default on all new and existing publications that adhere to the guidelines described above. Le paramétrage peut être modifié via SQL Server Management StudioSQL Server Management Studio ou par programme.The setting can be changed through SQL Server Management StudioSQL Server Management Studio or programmatically. Pour plus d’informations, consultez Optimize Parameterized Row Filters.For more information, see Optimize Parameterized Row Filters.

Conditions requises à l'utilisation des partitions précalculéesRequirements for Using Precomputed Partitions

Si les conditions requises sont atteintes, les nouvelles publications sont créées par défaut avec les partitions précalculées activées, et les publications existantes sont mises à niveau automatiquement afin d'utiliser cette fonctionnalité.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. Si une publication ne répond pas aux conditions requises, elle peut être modifiée pour que les partitions précalculées puissent ensuite être activées.If a publication does not meet the requirements, it can be changed, and then precomputed partitions can be enabled. Si quelques articles répondent aux conditions requises et d'autres non, envisagez de créer deux publications dont l'une d'entre elles est activée pour les partitions précalculées.If some articles meet these requirements and some do not, consider creating two publications, with one enabled for precomputed partitions.

Conditions requises pour les clauses de filtresRequirements for Filter Clauses

  • Toutes les fonctions utilisées dans le filtre de lignes paramétrable, telles que HOST_NAME() et SUSER_SNAME(), doivent apparaître directement dans la clause du filtre paramétrable et ne pas être imbriquées dans une vue ou une fonction dynamique.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. Pour plus d’informations sur ces fonctions, consultez HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL) et Filtres de lignes paramétrés.For more information about these functions, see HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), and Parameterized Row Filters.

  • Les valeurs renvoyées pour chaque abonné ne doivent pas être modifiées une fois que la partition a été créée.The values returned for each Subscriber should not change after the partition is created. Par exemple, si vous utilisez HOST_NAME() dans un filtre (sans remplacer la valeur HOST_NAME()), ne modifiez pas le nom de l'ordinateur sur l'Abonné.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.

  • Les filtres de jointure ne doivent pas contenir de fonctions dynamiques (telles que des fonctions HOST_NAME() et SUSER_SNAME() qui évaluent à une valeur différente selon l'Abonné qui se synchronise).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). Seuls les filtres de lignes paramétrables doivent contenir des fonctions dynamiques.Only parameterized row filters should contain dynamic functions.

  • Les fonctions non déterministes ne peuvent pas s'utiliser dans une clause de filtre.Nondeterministic functions cannot be used in a filter clause. Pour plus d'informations sur les fonctions non déterministes, consultez Deterministic and Nondeterministic Functions.For more information about nondeterministic functions, see Deterministic and Nondeterministic Functions.

  • Les vues référencées dans les clauses de filtres de jointure ou de filtre paramétré ne doivent pas contenir de fonctions dynamiques.Views referenced in join filter clauses or parameterized filter clauses should not contain dynamic functions.

  • Aucune relation de filtre de jointure circulaire ne doit exister dans la publication.There should be no circular join filter relationships in the publication.

Classement de base de donnéesDatabase Collation

  • Lorsque les partitions précalculées sont utilisées, le classement de base de données est toujours utilisé lorsque des comparaisons sont effectuées, plutôt que le classement de la table ou de la colonne.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. Examinez le cas suivant :Consider the following scenario:

    • Une base de données avec un classement respectant les accents contient une table avec un classement ne respectant pas les accents.A database with a case-sensitive collation contains a table with a case-insensitive collation.

    • La table contient une colonne Nom de l'ordinateurqui est comparée avec le nom d'hôte de l'Abonné dans un filtre paramétré.The table contains a column ComputerName, which is compared against the host name of the Subscriber in a parameterized filter.

    • La table contient une ligne avec la valeur « POSTE DE TRAVAIL » et une ligne avec la valeur « poste de travail » dans cette colonne.The table contains one row with the value "MYCOMPUTER" and one row with the value "mycomputer" in this column.

    Si l'Abonné synchronise avec un nom d'hôte « poste de travail », il ne reçoit qu'une ligne car la comparaison respecte les accents (le classement de la base de données).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). Si les partitions précalculées ne sont pas utilisées, l'Abonné reçoit les deux lignes, car la table dispose d'un classement qui ne respecte pas les accents.If precomputed partitions are not used, the Subscriber receives both rows, because the table has a case-insensitive collation.

Performances et partitions précalculéesPerformance of Precomputed Partitions

Les partitions précalculées engendrent une légère perte de performance lorsque les modifications sont chargées de l'Abonné au serveur de publication, mais comme la majorité du temps de traitement de fusion est passé à évaluer les partitions et à charger les modifications du serveur de publication sur l'Abonné, le gain en terme de performance peut quand même s'avérer important.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. L'amélioration des performances peut varier en fonction du nombre d'abonnés synchronisant simultanément, et le nombre de mises à jour par synchronisation déplaçant les lignes d'une partition à l'autre.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.

Voir aussiSee Also

Filtres de lignes paramétrésParameterized Row Filters