У меня есть SQL-сервер, который настроен с репликацией слиянием на 800 мобильных клиентов, работающих под управлением SQL CE.
У сервера достаточно ресурсов, а строки внутри и вне компании более чем достаточны, репликация между клиентами и сервером в целом хороша, но мы получаем прерывистую ошибку, которую я просто не могу отследить.
Вчера нам нужно было вставить 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)
Для многих таблиц, которые я не собираюсь вставлять... может ли это быть ключом?