SQL CE を実行している 800 台のモバイル クライアントへのマージ レプリケーションを使用してセットアップされた SQL サーバーがあります。
サーバーには十分なリソースがあり、会社の内外の回線は十分すぎるほどです。クライアントとサーバー間のレプリケーションは一般的に良好ですが、追跡できない断続的なエラーが発生しています。
昨日、メイン テーブルの 1 つに 550 のレコードを挿入する必要がありました。存在する唯一のトリガーは、標準のマージ レプリケーションのものです。
この挿入には、同期しようとしているモバイル デバイスで頻繁にデッドロックが発生したため、14 時間かかりました。
挿入時のロックを回避する方法とプロセス全体を高速化する方法について誰かアドバイスはありますか?
- - - アップデート - - -
いくつかのコメントに続いて、単一の挿入に対してプロファイラーを実行しましたが、この種のことがたくさん見られます
insert into dbo.MSmerge_current_partition_mappings with (rowlock) (publication_number, tablenick, rowguid, partition_id)
select distinct 1, mc.tablenick, mc.rowguid, v.partition_id
from dbo.MSmerge_contents mc with (rowlock)
JOIN dbo.[MSmerge_JEMProjectME_PromotionResource_PARTITION_VIEW] v with (rowlock)
ON mc.tablenick = 286358001
and mc.rowguid = v.[rowguid]
and mc.marker = @child_marker
and v.partition_id in (select partition_id from dbo.MSmerge_current_partition_mappings cpm with (rowlock) JOIN
dbo.MSmerge_contents mc2 with (rowlock)
ON cpm.rowguid = mc2.rowguid
and mc2.marker = @marker)
where not exists (select * from MSmerge_current_partition_mappings with (readcommitted, rowlock, readpast) where
publication_number = 1 and
tablenick = 286358001 and
rowguid = v.[rowguid] and
partition_id = v.partition_id)
私が挿入することを意図していない多くのテーブルについて...これは手がかりになるでしょうか?