Filtri con parametri - Ottimizzare per le partizioni pre-calcolateParameterized Filters - Optimize for Precomputed Partitions

Le partizioni pre-calcolate consentono di ottimizzare le prestazioni e possono essere utilizzate con le pubblicazioni di tipo merge filtrate.Precomputed partitions is a performance optimization that can be used with filtered merge publications. Rappresentano inoltre un requisito per l'utilizzo dei record logici sulle pubblicazioni filtrate.Precomputed partitions is also a requirement for using logical records on filtered publications. Per altre informazioni sui record logici, vedere Raggruppare modifiche alle righe correlate con record logici.For more information about logical records, see Group Changes to Related Rows with Logical Records.

Quando viene eseguita la sincronizzazione tra un Sottoscrittore e un server di pubblicazione, quest'ultimo deve valutare i filtri del Sottoscrittore per stabilire quali righe appartengono alla partizione o al set di dati di tale Sottoscrittore.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. Questo processo di determinazione dell'appartenenza alla partizione delle modifiche del server di pubblicazione per ogni Sottoscrittore che riceve un set di dati filtrato viene definita valutazione della partizione.This process of determining partition membership of changes at the Publisher for each Subscriber receiving a filtered dataset is referred to as partition evaluation. In assenza di partizioni pre-calcolate, la valutazione della partizione deve essere eseguita per ogni modifica apportata a una colonna filtrata nel server di pubblicazione dall'ultima esecuzione dell'agente di merge per uno specifico Sottoscrittore e questo processo deve essere ripetuto per ogni Sottoscrittore sincronizzato con il server di pubblicazione.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.

Se tuttavia il server di pubblicazione e il Sottoscrittore vengono eseguiti su MicrosoftMicrosoft SQL Server 2005SQL Server 2005 o versione successiva e si utilizzano partizioni pre-calcolate, l'appartenenza alla partizione per tutte le modifiche sul server di pubblicazione viene pre-calcolata e mantenuta durante l'inserimento delle modifiche.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. Di conseguenza, quando un Sottoscrittore viene sincronizzato con il server di pubblicazione, può iniziare immediatamente a scaricare le modifiche relative alla propria partizione senza essere sottoposto al processo di valutazione della partizione.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. In questo modo è possibile ottenere significativi miglioramenti delle prestazioni quando una pubblicazione presenta un numero elevato di modifiche, Sottoscrittori o articoli.This can lead to significant performance gains when a publication has a large number of changes, Subscribers, or articles in the publication.

Oltre a utilizzare partizioni pre-calcolate, creare snapshot preliminari e/o consentire ai Sottoscrittori di richiedere la generazione e l'applicazione di snapshot alla prima sincronizzazione.In addition to using precomputed partitions, pre-generate snapshots and/or allow Subscribers to request snapshot generation and application the first time they synchronize. Utilizzare una o entrambe le opzioni per generare snapshot per le pubblicazioni che utilizzando filtri con parametri.Use one or both of these options to provide snapshots for publications that use parameterized filters. Se non si specifica alcuna opzione, le sottoscrizioni vengono inizializzate tramite una serie di istruzioni SELECT e INSERT, anziché tramite l'utilità bcp . Questo processo risulta decisamente più 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. Per altre informazioni, vedere Snapshots for Merge Publications with Parameterized Filters.For more information, see Snapshots for Merge Publications with Parameterized Filters.

Per utilizzare le partizioni pre-calcolateTo use precomputed partitions

Per impostazione predefinita, le partizioni pre-calcolate sono abilitate su tutte le pubblicazioni nuove ed esistenti che rispettano le indicazioni descritte sopra.Precomputed partitions are enabled by default on all new and existing publications that adhere to the guidelines described above. È possibile modificare l'impostazione mediante SQL Server Management StudioSQL Server Management Studio o a livello di programmazione.The setting can be changed through SQL Server Management StudioSQL Server Management Studio or programmatically. Per altre informazioni, vedere Optimize Parameterized Row Filters.For more information, see Optimize Parameterized Row Filters.

Requisiti per l'utilizzo delle partizioni pre-calcolateRequirements for Using Precomputed Partitions

Se vengono soddisfatti i requisiti riportati di seguito, per impostazione predefinita le nuove pubblicazioni di tipo merge vengono create con le partizioni pre-calcolate abilitate e quelle esistenti vengono automaticamente aggiornate per l'utilizzo di tale funzionalità.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 una pubblicazione non soddisfa i requisiti, è possibile modificarla e quindi procedere all'abilitazione delle partizioni pre-calcolate.If a publication does not meet the requirements, it can be changed, and then precomputed partitions can be enabled. Se solo alcuni articoli soddisfano questi requisiti, provare a creare due pubblicazioni, abilitandone solo una per le partizioni pre-calcolate.If some articles meet these requirements and some do not, consider creating two publications, with one enabled for precomputed partitions.

Requisiti per le clausole di filtroRequirements for Filter Clauses

  • Le funzioni utilizzate nei filtri di riga con parametri, quali HOST_NAME() e SUSER_SNAME(), devono essere visualizzate direttamente nella clausola di filtro con parametri e non devono essere nidificate all'interno di una vista o di una funzione dinamica.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. Per altre informazioni su queste funzioni, vedere HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL) e Filtri di riga con parametri.For more information about these functions, see HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), and Parameterized Row Filters.

  • I valori restituiti per ogni Sottoscrittore non devono essere modificati in seguito alla creazione della partizione.The values returned for each Subscriber should not change after the partition is created. Se, ad esempio, si utilizza HOST_NAME() in un filtro, senza sovrascrivere il valore HOST_NAME(), non modificare il nome del computer nel Sottoscrittore.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.

  • I filtri join non devono contenere funzioni dinamiche, ovvero funzioni come HOST_NAME() e SUSER_SNAME() che restituiscono un valore diverso a seconda del Sottoscrittore in fase di sincronizzazione.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 i filtri di riga con parametri devono contenere funzioni dinamiche.Only parameterized row filters should contain dynamic functions.

  • Non è possibile utilizzare funzioni non deterministiche in una clausola di filtro.Nondeterministic functions cannot be used in a filter clause. Per ulteriori informazioni sulle funzioni non deterministiche, vedere Deterministic and Nondeterministic Functions.For more information about nondeterministic functions, see Deterministic and Nondeterministic Functions.

  • Le viste a cui viene fatto riferimento nelle clausole relative ai filtri join o ai filtri con parametri non devono contenere funzioni dinamiche.Views referenced in join filter clauses or parameterized filter clauses should not contain dynamic functions.

  • Nella pubblicazione non devono essere presenti relazioni circolari tra filtri join.There should be no circular join filter relationships in the publication.

Regole di confronto del databaseDatabase Collation

  • Quando si utilizzano partizioni pre-calcolate, per effettuare confronti vengono sempre utilizzate le regole di confronto del database anziché quelle della tabella o della colonna.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. Si consideri lo scenario seguente:Consider the following scenario:

    • Un database con regole di confronto con distinzione tra maiuscole e minuscole contiene una tabella con regole di confronto per le quali non viene applicata tale distinzione.A database with a case-sensitive collation contains a table with a case-insensitive collation.

    • La tabella contiene la colonna ComputerName, che viene confrontata con il nome host del Sottoscrittore in un filtro con parametri.The table contains a column ComputerName, which is compared against the host name of the Subscriber in a parameterized filter.

    • La tabella contiene una riga con il valore "MYCOMPUTER" e una riga con il valore "mycomputer" in questa colonna.The table contains one row with the value "MYCOMPUTER" and one row with the value "mycomputer" in this column.

      Se il Sottoscrittore viene sincronizzato con il nome host "mycomputer", riceverà solo una riga in quanto il confronto supporta la distinzione tra maiuscole e minuscole (le regole di confronto del database).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 le partizioni pre-calcolate non vengono utilizzate, il Sottoscrittore riceverà entrambe le righe, in quanto le regole di confronto della tabella non supportano la distinzione tra maiuscole e minuscole.If precomputed partitions are not used, the Subscriber receives both rows, because the table has a case-insensitive collation.

Prestazioni delle partizioni pre-calcolatePerformance of Precomputed Partitions

Il calo delle prestazioni delle partizioni pre-calcolate è ridotto quando le modifiche vengono caricate dal Sottoscrittore nel server di pubblicazione, ma il tempo per l'elaborazione dei processi merge viene impiegato per la valutazione delle partizioni e il download delle modifiche dal server di pubblicazione al Sottoscrittore e pertanto il guadagno netto può risultare ancora 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. I vantaggi in termini di prestazioni varieranno a seconda del numero di Sottoscrittori che eseguono contemporaneamente la sincronizzazione e del numero di aggiornamenti per sincronizzazione che comportano lo spostamento delle righe da una partizione all'altra.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.

Vedere ancheSee Also

Parameterized Row FiltersParameterized Row Filters