Hi Alex,
Let me first explain how deadlock is expected in this kind of situation.
When you have change tracking turned on(manual or auto), every DML operation
to your table will trigger an update/insert to our internal tracking table.
When auto crawl running at the background(if you set change tracking to
auto), it will continousely scan the internal tracking table to crawl the
document. Now you can see because user can update documents in any order it
is quite possible that our background crawl task will deadlock with user DML
if both try to lock multiple documents out of order at same time. The
background crawl task will always be deadlock victim and it will retry.
To reduce deadlock you can set change tracking to manual and start crawl
manually when system load is not high. Our recommandation of using full-text
with replication is to use incremental crawl when you expect heavy load(build
a secondary index on your time stamp column and issue crawl manualy when
system load is low). Change tracking has a trigger cost when replication
replays the change on destination database. It is better to be turned off in
your case.
In any case you should avoid crawl and heavy load of replication at same
time. Deadlock could happen as long as user update and crawl running at same
time. Logically we will handle dealock correctly but it will hurt your
performance.
thanks,
Jingwei
[quoted text, click to view] "Alex Sibilev" wrote:
> Hello Hilary,
>
> > Use change tracking over the other population methods if the tables
> > are big.
> >
> > The timestamp column won't really help you with change tracking once
> > the initial population has completed.
> >
>
> Thank for your reply.
>
> Table is quite big 2-3M records. If change tracking is recommended way of
> FT indexing large tables, then how do I get rid of locks which blocks updating
> underlying table. As I see it - "change tracking" analyses modified record
> and if FT-indexed column(s) been modified then it add this record PK id
> to the list of documents required reindexing (fulltext_index_map??) When
> I call sp_fulltext_table 'update_index' it gets these IDs reindexes documents
> and removes them from the list. Both processes lock fulltext_index_map and
> under certain conditions deadlocks occur. Plus "change tracking" need some
> resources to perform all those things.
>
> As for the timestamp I mean using it with incremental population and change
> tracking turned off.
>
>
> Alex
>
>