Filtros con parámetros: optimizar para las particiones precalculadasParameterized Filters - Optimize for Precomputed Partitions

En este tema se aplica a: SíSQL Servernobase de datos de SQL Azurenoalmacenamiento de datos de SQL Azure ningún Almacenamiento de datos paralelosTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Las particiones precalculadas son una optimización del rendimiento que se puede utilizar con publicaciones de combinación filtradas. Precomputed partitions is a performance optimization that can be used with filtered merge publications. Las particiones precalculadas son también un requisito para utilizar registros locales en publicaciones filtradas.Precomputed partitions is also a requirement for using logical records on filtered publications. Para obtener más información sobre los registros lógicos, vea Agrupar cambios en filas relacionadas con registros lógicos.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Cuando un suscriptor se sincroniza con un publicador, el publicador debe evaluar los filtros del suscriptor para determinar qué filas pertenecen a la partición, o conjunto de datos, de ese suscriptor.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. Este proceso de determinar la pertenencia a particiones de los cambios en el publicador para cada suscriptor que recibe un conjunto de datos filtrados se denomina evaluación de particiones.This process of determining partition membership of changes at the Publisher for each Subscriber receiving a filtered dataset is referred to as partition evaluation. Sin las particiones precalculadas, la evaluación de particiones debe realizarse para cada cambio efectuado en una columna filtrada del publicador desde la última vez que se ejecutó el Agente de mezcla para un suscriptor concreto, y este proceso tiene que repetirse para cada suscriptor que se sincroniza con el 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.

No obstante, si el publicador y el suscriptor se están ejecutando en MicrosoftMicrosoft Resultado deSQL Server 2005 o una versión posterior y utiliza particiones precalculadas, la pertenencia a particiones de todos los cambios efectuados en el publicador se calcula previamente y se mantiene en el momento en que se realizan los cambios.However, if the Publisher and Subscriber are running on MicrosoftMicrosoft Resultado deSQL 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, cuando un suscriptor se sincroniza con el publicador, puede empezar a descargar inmediatamente los cambios relativos a su partición sin tener que pasar por el proceso de evaluación de particiones.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. Esto puede producir importantes mejoras de rendimiento cuando una publicación tiene un número elevado de cambios, suscriptores o artículos.This can lead to significant performance gains when a publication has a large number of changes, Subscribers, or articles in the publication.

Además de utilizar particiones precalculadas, genere instantáneas previamente o permita a los suscriptores que soliciten la generación y aplicación de instantáneas la primera vez que se sincronizan.In addition to using precomputed partitions, pre-generate snapshots and/or allow Subscribers to request snapshot generation and application the first time they synchronize. Utilice una de estas opciones o las dos para proporcionar instantáneas para publicaciones que utilicen filtros con parámetros.Use one or both of these options to provide snapshots for publications that use parameterized filters. Si no especifica una de estas opciones, las suscripciones se inicializan utilizando una serie de instrucciones SELECT e INSERT, en lugar de la utilidad bcp ; este proceso es mucho más 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 más información, consulte Snapshots for Merge Publications with Parameterized Filters.For more information, see Snapshots for Merge Publications with Parameterized Filters.

Para utilizar particiones precalculadasTo use precomputed partitions

Las particiones precalculadas están habilitadas de forma predeterminada en todas las publicaciones nuevas y existentes que se ajustan a las directrices indicadas anteriormente.Precomputed partitions are enabled by default on all new and existing publications that adhere to the guidelines described above. La configuración se puede cambiar a través de SQL Server Management StudioSQL Server Management Studio o mediante programación.The setting can be changed through SQL Server Management StudioSQL Server Management Studio or programmatically. Para más información, consulte Optimize Parameterized Row Filters.For more information, see Optimize Parameterized Row Filters.

Requisitos para utilizar particiones precalculadasRequirements for Using Precomputed Partitions

Si se reúnen los siguientes requisitos, las publicaciones de combinación nuevas se crean, de forma predeterminada, con las particiones precalculadas habilitadas, y las publicaciones existentes se actualizan de forma automática para utilizar esta 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. Si una publicación no reúne los requisitos se puede cambiar y, a continuación, habilitar las particiones precalculadas.If a publication does not meet the requirements, it can be changed, and then precomputed partitions can be enabled. Si algunos artículos satisfacen estos requisitos y otros no, considere la posibilidad de crear dos publicaciones, una de ellas habilitada para particiones precalculadas.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

  • Cualquier función utilizada en los filtros de fila con parámetros, como HOST_NAME() y SUSER_SNAME(), debe aparecer directamente en la cláusula de filtro con parámetros en lugar de anidarse dentro de una vista o función 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 obtener más información sobre estas funciones, consulte HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL) y Filtros de fila con parámetros.For more information about these functions, see HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), and Parameterized Row Filters.

  • Los valores devueltos para cada suscriptor no deben cambiarse una vez creada la partición.The values returned for each Subscriber should not change after the partition is created. Por ejemplo, si utiliza HOST_NAME() en un filtro, y no reemplaza el valor de HOST_NAME(), no cambie el nombre del equipo en el suscriptor.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.

  • Los filtros de combinación no deben contener funciones dinámicas (funciones como HOST_NAME() y SUSER_SNAME() que evalúan a un valor diferente dependiendo del suscriptor que se 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). Solo los filtros de fila con parámetros deben contener funciones dinámicas.Only parameterized row filters should contain dynamic functions.

  • No se pueden usar funciones no deterministas en una cláusula de filtro.Nondeterministic functions cannot be used in a filter clause. Para obtener más información acerca de las funciones no deterministas, vea Deterministic and Nondeterministic Functions.For more information about nondeterministic functions, see Deterministic and Nondeterministic Functions.

  • Las vistas a las que se hace referencia en las cláusulas de filtro de combinación o cláusulas de filtro con parámetros no deben contener funciones dinámicas.Views referenced in join filter clauses or parameterized filter clauses should not contain dynamic functions.

  • No deben existir relaciones de filtro de combinación circulares en la publicación.There should be no circular join filter relationships in the publication.

Intercalación de base de datosDatabase Collation

  • Cuando se utilizan las particiones precalculadas, siempre se utiliza la intercalación de la base de datos al realizar comparaciones, en lugar de la intercalación de la tabla o columna.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 el caso siguiente:Consider the following scenario:

    • Una base de datos con una intercalación que distingue entre mayúsculas y minúsculas contiene una tabla con una intercalación que no distingue entre mayúsculas y minúsculas.A database with a case-sensitive collation contains a table with a case-insensitive collation.

    • La tabla contiene una columna ComputerNameque se compara con el nombre de host del suscriptor en un filtro con parámetros.The table contains a column ComputerName, which is compared against the host name of the Subscriber in a parameterized filter.

    • La tabla contiene una fila con el valor "MYCOMPUTER" y otra fila con el valor "mycomputer" en esta columna.The table contains one row with the value "MYCOMPUTER" and one row with the value "mycomputer" in this column.

      Si el suscriptor se sincroniza con un nombre de host de "mycomputer", el suscriptor recibe solamente una fila porque la comparación distingue entre mayúsculas y minúsculas (la intercalación de la base de datos).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 no se utilizan particiones precalculadas, el suscriptor recibe ambas filas porque la tabla tiene una intercalación que no distingue entre mayúsculas y minúsculas.If precomputed partitions are not used, the Subscriber receives both rows, because the table has a case-insensitive collation.

Rendimiento de las particiones precalculadasPerformance of Precomputed Partitions

Existe un pequeño costo de rendimiento con las particiones precalculadas cuando se cargan cambios desde el suscriptor al publicador, pero la mayor parte del tiempo de procesamiento de mezcla se dedica a evaluar las particiones y descargar los cambios del publicador al suscriptor, por lo que la ganancia neta puede ser importante.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. La ventaja en cuanto al rendimiento variará dependiendo del número de suscriptores que se sincronicen de forma simultánea y del número de actualizaciones por sincronización que desplacen filas de una partición a otra.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.

Vea tambiénSee Also

Parameterized Row FiltersParameterized Row Filters