매개 변수가 있는 필터 - 사전 계산된 파티션에 최적화Parameterized Filters - Optimize for Precomputed Partitions

사전 계산 파티션을 필터링된 병합 게시에 사용하여 성능을 최적화할 수 있습니다.Precomputed partitions is a performance optimization that can be used with filtered merge publications. 또한 사전 계산 파티션은 필터링된 게시에서 논리 레코드를 사용하기 위한 요구 사항입니다.Precomputed partitions is also a requirement for using logical records on filtered publications. 논리적 레코드에 대한 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하세요.For more information about logical records, see Group Changes to Related Rows with Logical Records.

구독자가 게시자와 동기화되면 게시자는 구독자의 필터를 평가하여 그 구독자의 파티션이나 데이터 집합에 속하는 행을 확인해야 합니다.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. 게시자에서 필터링된 데이터 집합을 수신하는 각 구독자에 대한 변경 내용의 파티션 멤버 자격을 결정하는 이 과정을 파티션 평가라고 합니다.This process of determining partition membership of changes at the Publisher for each Subscriber receiving a filtered dataset is referred to as partition evaluation. 사전 계산 파티션을 사용하지 않을 경우 특정 구독자에 대해 병합 에이전트를 마지막으로 실행한 이후에 게시자에서 필터링된 열의 각 변경 내용에 대해 파티션 평가를 수행해야 합니다. 게시자와 동기화하는 모든 구독자에 대해 이 프로세스를 반복합니다.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.

그러나 게시자와 구독자가 MicrosoftMicrosoft SQL Server 2005SQL Server 2005 이상 버전에서 실행 중이고 사전 계산 파티션을 사용할 경우에는 변경이 발생할 때 게시자의 모든 변경 내용에 대한 파티션 멤버 자격이 사전 계산되고 지속됩니다.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. 결과적으로 구독자가 게시자와 동기화할 때 파티션 평가 과정을 거치지 않고도 파티션과 관련된 변경 내용을 즉시 다운로드할 수 있습니다.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. 이 기능을 통해 게시에 변경 내용, 구독자 또는 아티클이 많을 경우 성능이 크게 향상될 수 있습니다.This can lead to significant performance gains when a publication has a large number of changes, Subscribers, or articles in the publication.

사전 계산 파티션을 사용하는 것 외에도 스냅숏을 미리 생성하거나 구독자가 처음 동기화될 때 스냅숏의 생성과 적용을 요청하도록 합니다.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 one or both of these options to provide snapshots for publications that use parameterized filters. 이러한 옵션을 하나도 지정하지 않으면 bcp 유틸리티를 사용하지 않고 일련의 SELECT 및 INSERT 문을 사용하여 구독을 초기화하게 되는데 이 경우 프로세스의 속도가 훨씬 느립니다.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. 자세한 내용은 Snapshots for Merge Publications with Parameterized Filters을 참조하세요.For more information, see Snapshots for Merge Publications with Parameterized Filters.

사전 계산 파티션을 사용하려면To use precomputed partitions

위에서 설명한 지침을 따르는 새 게시와 기존 게시의 경우 사전 계산 파티션이 기본적으로 설정됩니다.Precomputed partitions are enabled by default on all new and existing publications that adhere to the guidelines described above. 설정은 SQL Server Management StudioSQL Server Management Studio 를 통해 또는 프로그래밍 방식으로 변경할 수 있습니다.The setting can be changed through SQL Server Management StudioSQL Server Management Studio or programmatically. 자세한 내용은 Optimize Parameterized Row Filters을 참조하세요.For more information, see Optimize Parameterized Row Filters.

사전 계산 파티션을 사용하기 위한 요구 사항Requirements for Using Precomputed Partitions

아래의 요구 사항이 만족되면 새 병합 게시는 기본적으로 사전 계산 파티션이 설정된 상태로 생성되고 기존 게시는 사전 계산 파티션을 사용하도록 자동으로 업그레이드됩니다.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. 게시가 요구 사항을 만족하지 않으면 게시를 변경한 다음 사전 계산 파티션을 설정할 수 있습니다.If a publication does not meet the requirements, it can be changed, and then precomputed partitions can be enabled. 아티클의 일부는 이러한 요구 사항을 만족하고 일부는 만족하지 않을 경우 두 개의 게시를 만들어 보십시오. 그 중 하나는 사전 계산 파티션을 설정합니다.If some articles meet these requirements and some do not, consider creating two publications, with one enabled for precomputed partitions.

필터 절 요구 사항Requirements for Filter Clauses

  • HOST_NAME() 및 SUSER_SNAME()과 같이 매개 변수가 있는 행 필터에 사용된 함수는 매개 변수가 있는 필터 절에 직접 표시되어야 하며 뷰 또는 동적 함수 내에서 중첩되지 않아야 합니다.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. 이러한 함수에 대한 자세한 내용은 HOST_NAME(Transact-SQL), SUSER_SNAME(Transact-SQL)매개 변수가 있는 행 필터를 참조하세요.For more information about these functions, see HOST_NAME (Transact-SQL), SUSER_SNAME (Transact-SQL), and Parameterized Row Filters.

  • 파티션이 생성된 후에는 각 구독자로 반환된 값을 변경하지 마십시오.The values returned for each Subscriber should not change after the partition is created. 예를 들어 필터에 HOST_NAME()을 사용하고 HOST_NAME() 값을 무시하지 않을 경우 구독자에서 컴퓨터 이름을 변경하지 마십시오.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.

  • 조인 필터에는 HOST_NAME() 및 SUSER_SNAME() 함수와 같이 동기화 중인 구독자에 따라 다른 값으로 평가되는 동적 함수가 포함되지 않아야 합니다.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). 동적 함수는 매개 변수가 있는 행 필터만 포함할 수 있습니다.Only parameterized row filters should contain dynamic functions.

  • 필터 절에는 비결정적 함수를 사용할 수 없습니다.Nondeterministic functions cannot be used in a filter clause. 비결정적 함수에 대한 자세한 내용은 Deterministic and Nondeterministic Functions를 참조하십시오.For more information about nondeterministic functions, see Deterministic and Nondeterministic Functions.

  • 조인 필터 절이나 매개 변수가 있는 필터 절에서 참조하는 뷰에는 동적 함수가 포함되지 않아야 합니다.Views referenced in join filter clauses or parameterized filter clauses should not contain dynamic functions.

  • 게시에 순환 조인 필터 관계가 없어야 합니다.There should be no circular join filter relationships in the publication.

데이터베이스 정렬Database Collation

  • 사전 계산 파티션을 사용할 경우 비교 시 테이블 또는 열의 데이터 정렬이 아닌 데이터베이스의 데이터 정렬을 항상 사용합니다.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. 다음과 같은 시나리오를 고려해 보세요.Consider the following scenario:

    • 데이터 정렬이 대/소문자를 구분하는 데이터베이스에 대/소문자를 구분하지 않는 테이블이 들어 있습니다.A database with a case-sensitive collation contains a table with a case-insensitive collation.

    • 매개 변수가 있는 필터에 있는 구독자의 호스트 이름과 비교할 ComputerName열이 테이블에 들어 있습니다.The table contains a column ComputerName, which is compared against the host name of the Subscriber in a parameterized filter.

    • 테이블에 값이 "MYCOMPUTER"인 행과 "mycomputer"인 행이 하나씩 있습니다.The table contains one row with the value "MYCOMPUTER" and one row with the value "mycomputer" in this column.

      구독자가 호스트 이름 "mycomputer"와 동기화되면 비교 시 데이터베이스 정렬이 대/소문자를 구분하므로 구독자는 행을 하나만 받습니다.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). 사전 계산 파티션을 사용하지 않을 경우 테이블의 데이터 정렬이 대/소문자를 구분하지 않으므로 구독자는 행을 두 개 모두 받습니다.If precomputed partitions are not used, the Subscriber receives both rows, because the table has a case-insensitive collation.

사전 계산 파티션의 성능Performance of Precomputed Partitions

구독자에서 게시자로 변경 내용이 업로드될 경우 사전 계산 파티션에서 성능 손실이 적게 발생하지만 병합 처리 시간의 대부분이 파티션을 평가하고 게시자에서 구독자로 변경 내용을 다운로드하는 데 소비되므로 성능을 향상시키는 것이 중요합니다.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. 동시에 동기화하는 구독자의 수와 한 파티션에서 다른 파티션으로 행을 이동하는 동기화당 업데이트 수에 따라 성능상의 이점이 달라집니다.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.

관련 항목:See Also

Parameterized Row FiltersParameterized Row Filters