Ho un server SQL che viene configurato con la replica di tipo merge su 800 client mobili che eseguono SQL CE.Gli inserimenti nel database Merge Replication sono follemente lenti
Il server dispone di risorse sufficienti e le linee interne e esterne dell'azienda sono più che adeguate, la replica tra i client e il server è generalmente buona, ma riceviamo un errore intermittente che non riesco a rintracciare.
Ieri abbiamo dovuto inserire 550 record in una delle nostre tabelle principali, gli unici trigger esistenti sono quelli di replica standard.
Questo inserto ha impiegato 14 ore a causa del suo continuo blocco con dispositivi mobili che tentano di sincronizzarsi.
Qualcuno ha qualche consiglio su come evitare i blocchi sugli inserti e su come accelerare l'intero processo?
------ Aggiornamento -----
A seguito di alcuni commenti che ho incontrato un profiler nel corso di un unico inserto e sto vedendo un sacco di questo genere di cose
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)
Per molti tavoli che non ho intenzione di inserire in ... potrebbe essere un indizio?
1. Quali sono i livelli di isolamento utilizzati da insert e syncs? Di solito l'inserimento non dovrebbe essere un problema. 2. Quanti indici hai? 3. Avete indici che non sono incrementali e causeranno l'inserimento di record nel mezzo della struttura ad albero invece della fine? 4. Hai un indice cluster? – Farfarak
1. Non sono sicuro sui livelli di isolamento .. è solo un'istruzione di inserimento standard - 2. Stiamo inserendo nella tabella A che ha 1 indice standard .. tuttavia i trigger di replica di unione lo incollano in molte altre tabelle - 3. Non sul tavolo stiamo inserendo in - 4. No –
1. Avete richieste che vengono chiamate durante la replica potrebbe essere che il processo di replica blocchi l'intera tabella nel vostro caso (non avete indice cluster) 2. C'è una chiave univoca sul tavolo ? – Farfarak