优化参数化行筛选器
适用于:SQL Server
本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中优化参数化行筛选器。
本主题内容
开始之前:
优化参数化行筛选器,使用:
开始之前
建议
当使用参数化筛选器时,可通过在创建发布时指定 use partition groups 或 keep partition changes 选项来控制合并复制处理筛选器的方式。 通过将其他元数据存储在发布数据库中,上述选项可提高具有已筛选项目的发布的同步性能。 通过在创建项目时设置 partition options ,您可以控制在订阅服务器之间共享数据的方式。 有关这些要求的详细信息,请参阅 参数化行筛选器。
使用 SQL Server CompactSQL Server Compact 订阅服务器时,keep_partition_changes 必须设置为“true”以确保正确传播删除操作。 设置为 false 时,订阅服务器可能有比预期更多的行。
使用 SQL Server Management Studio
以下设置可用于优化参数化行筛选器:
Partition Options
可在“项目属性 - <项目>”对话框中的“属性”页上,或在“添加筛选器”对话框中设置此选项。 这两个对话框都可在新建发布向导和“发布属性 - <发布>”对话框中获取。 通过“项目属性 - <项目>”对话框可以为此选项指定在“添加筛选器”对话框中不可用的其他值。
预计算分区
如果发布中的项目符合一组要求,则此选项在默认情况下将设置为 True 。 有关这些要求的详细信息,请参阅使用预计算分区优化参数化筛选器性能。 在“发布属性 - <发布>”对话框的“订阅选项”页上修改此选项。
优化同步
仅当 “预计算分区” 设置为 False 时此选项才应设置为 True。 在“发布属性 - <发布>”对话框的“订阅选项”页上设置此选项。
有关使用新建发布向导和访问“发布属性 - <发布>”对话框的详细信息,请参阅创建发布和查看和修改发布属性。
在“添加筛选器”或“编辑筛选器”对话框中设置分区选项。
在新建发布向导的“筛选表行”页或“发布属性 - <发布>”对话框的“筛选行”页上,单击“添加”,然后单击“添加筛选器”。
创建参数化筛选器。 有关详细信息,请参阅 定义和修改合并项目的参数化行筛选器。
选择指示订阅服务器之间如何共享数据的选项:
此表中的行将转到多个订阅
此表中的行将仅转到一个订阅
如果选择 “此表中的行将仅转到一个订阅”,则合并复制可以通过存储和处理较少的元数据来优化性能。 但是,必须确保在对数据分区时不能将行复制到多个订阅服务器。 有关详细信息,请参阅主题 参数化行筛选器中的“设置‘分区选项’”部分。
选择“确定”。
如果处于“发布属性 - <发布>”对话框中,请单击“确定”以保存并关闭该对话框。
在“项目属性 - <项目>”对话框中设置分区选项
在新建发布向导的“项目”页或“发布属性 - <发布>”对话框中,选择一个表,然后单击“项目属性”。
单击 “设置突出显示的表项目的属性” 或 “设置所有表项目的属性”。
在“项目属性 - <项目>”对话框的“属性”选项卡的“目标对象”部分中,为“分区选项”指定以下值之一:
重叠
重叠,不允许分区外的数据更改
不重叠,一个订阅
不重叠,由所有订阅共享
有关这些选项以及它们与 “添加筛选器” 和 “编辑筛选器” 对话框中选项的关系的详细信息,请参阅 参数化行筛选器的“设置‘分区选项’”部分。
选择“确定”。
如果处于“发布属性 - <发布>”对话框中,请单击“确定”以保存并关闭该对话框。
设置预计算分区
在“发布属性 - <发布>”对话框的“订阅选项”页上,为“预计算分区”选项选择值。 在以下情况下,则此属性为只读:
发布不满足对预计算分区的要求。
尚未为发布生成快照。 这种情况下,该选项会显示 “创建快照时自动设置”值。
选择“确定”。
设置优化同步
在“发布属性 - < 发布 >”对话框的“订阅选项”页上,为“优化同步”选项选择值
True
。选择“确定”。
“使用 Transact-SQL”
有关 @keep_partition_changes
和 @use_partition_groups
的筛选选项的定义,请参阅 sp_addmergepublication 中优化参数化行筛选器。
创建新发布时指定合并筛选器的优化
在发布服务器上,对发布数据库执行 sp_addmergepublication。 指定
@publication
,并将值true
指定给以下参数之一:@use_partition_groups
:最高级别的性能优化(如果项目符合预计算分区的要求)。 有关详细信息,请参阅使用预计算分区优化参数化筛选器性能。@keep_partition_changes
- 如果无法使用预计算分区,请使用此优化。
为发布添加一个快照作业。 有关详细信息,请参阅创建发布。
在发布服务器上,对发布数据库执行 sp_addmergearticle,并指定以下参数:
@publication
- 步骤 1 中发布的名称。@article
- 项目的名称@source_object
- 发布的数据库对象。@subset_filterclause
- 用于以水平方式筛选项目的参数化筛选器子句(可选)。@partition_options
- 已过滤项目的分区选项。
对发布中的每个项目重复步骤 3。
(可选)在发布服务器上,对发布数据库执行 sp_addmergefilter 以在两个项目之间定义一个联接筛选器。 有关详细信息,请参阅 定义和修改合并项目间的联接筛选器。
查看和修改现有发布的合并筛选器行为
(可选)在发布服务器上,对发布数据库执行 sp_helpmergepublication,并指定
@publication
中优化参数化行筛选器。 请记录结果集中keep_partition_changes
和use_partition_groups
的值。(可选)在发布服务器上,对发布数据库执行 sp_changemergepublication。 为
@property
指定值use_partition_groups
,为@value
指定值true
或false
。(可选)在发布服务器上,对发布数据库执行 sp_changemergepublication。 为
@property
指定值keep_partition_changes
,为@value
指定值true
或false
。注意
启用
keep_partition_changes
时,必须首先禁用use_partition_groups
并为@force_reinit_subscription
指定值1
。(可选)在发布服务器上,对发布数据库执行 sp_changemergearticle。 为
@property
指定值partition_options
,并为@value
指定适当的值。 有关以上筛选选项的定义,请参阅 sp_addmergearticle 。(可选)启动快照代理以重新生成快照(如果需要)。 有关哪些更改需要生成新快照的信息,请参阅更改发布和项目属性。
另请参阅
在合并项目之间自动生成一组联接筛选器 (SQL Server Management Studio)
定义和修改合并项目的参数化行筛选器
参数化行筛选器
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈