在我的分发服务器数据库中寻找缺少的索引时,我惊讶地发现太多了。
需要编入索引的表一般为3:
MSrepl_commands MSlogreader_history MSdistribution_history
下面是缺少索引的图片

现在专注于表MSdistribution_history
这一切似乎都归结为以下三个指数:
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX
IDX_agent_id_time_xact_seqnorunstatus_INC_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([agent_id], [time], [xact_seqno], [runstatus])
INCLUDE (delivery_latency,start_time,timestamp) WITH (ONLINE = ON)
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX IDX_runstatus_INC_agent_id_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([runstatus])
INCLUDE (agent_id,delivery_latency,time,xact_seqno,timestamp)
WITH (ONLINE = ON)
USE distribution_BOCSS;
CREATE NONCLUSTERED INDEX IDX_agent_idrunstatus_INC_time_xact_seqno_delivery_latency
ON [distribution_BOCSS].[dbo].[MSdistribution_history]
([agent_id], [runstatus])
INCLUDE (time,xact_seqno,delivery_latency,timestamp,start_time)
WITH (ONLINE = ON)但是,正如我所想象的那样,当前现有聚集索引上的更新数量非常高(自它添加到这些统计数据(可能是自上次重新启动以来)之后就不确定了),如下图所示:

写得太高了,这是一个制作系统,我想对此有更多的支持。创建这些索引真的会使我受益吗?
是否有任何文档支持在事务性复制的分发服务器数据库上创建索引?
为什么微软没有为这些数据库提供适当的索引?
发布于 2015-09-04 19:43:47
复制通常正常工作,而且我没有遇到任何问题,需要在分发数据库上创建额外的索引。(在我的公司,我们经常使用复制进行数据从一个区域到另一个区域的移动)
如果复制没有问题,请避免创建这些索引。创建索引不是免费的,因为Server必须维护任何DDL更改,这意味着您必须对这些索引进行适当的维护。
有你可以做的调优。例如,如果您的发布将immediate sync设置为TRUE,那么这将导致事务保存在MSRepl_commands中,而不是在分发时删除它们。因此,将immediate sync设置为FALSE将有助于发行版清理工作进行更快的清理。
是否有任何文档支持在事务性复制的分发服务器数据库上创建索引?
Microsoft不支持对系统表(复制、日志传送)进行任何更改,除非CSS告诉您。这并不意味着您不能创建这些索引,它只是意味着,如果您使用Microsoft打开一个案例,除非您删除您自己创建的索引,否则它们将不支持。
检查无法修复的连接- [MSrepl]_命令]
所以我的建议是,基线你的服务器实例。获取持续时间较长的数据,如果面临问题,则通过创建适当的索引来解决这些问题。首先测试、测试和测试您的所有更改,并且在处理供应商软件时始终支持它。您可以提交一个连接项,如果Microsoft对其进行了处理,那么它将作为修复程序或在以后的版本中包含。
https://dba.stackexchange.com/questions/114236
复制相似问题