Hi All,
We are experiencing a couple of strange issues with FTI/FTS.
Our environment: W2K3x64 Clustered SQL 2005 SP 1(2 instances) 4GB Ram,
Dual Proc, lots of disk.
We have one table (currently 425,000 rows) that has a FTI on 6
columns, all VARCHAR columns. Change tracking is set to Manual, we
update the index fully every morning at 1AM.
It works great most of the time, but some times queries that call a
stored proc that do a select against this index (which do a select ...
where contains(*, <string>)) time out from our ASP.NET applications,
but not from SQL Management studio. When this happens if we either
fully rebuild the index or recompile the stored procedure the ASP.NET
apps are again able to get results.
The Second issue we are seeing is that when we do mass deletes from
this table (90,000 rows using a clustered index) we sometimes get
blocking on the fulltext indexes and a query that used to take 2
seconds takes 20 minutes.
When both of these issues occur, the Processing on the SQL Server box
(which is normally under 5%) stays between 50%-60%. Memory stays
relatively constant ~2 GB used by SQL Server.
Does anyone have any thoughts on what is going on? When doing a big
delete against a table that has an FTI, is there some best practices
we should be following? We don't have that much experience with FTI/
FTS so I'm hoping we are missing something obvious.
Thanks in advance.
Mike
Hilary Cotter - 25 Oct 2007 04:41 GMT
When doing a big delete you should set change tracking to scheduled mode
instead of index in background. You might also find that a full-population
might work faster than change tracking. This will stop/minimize your locking
problems.
I am not sure what is causing the timeouts. It could be change tracking. Run
profiler to see if you can determine what is causing the problem.

Signature
RelevantNoise.com - dedicated to mining blogs for business intelligence.
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
> Hi All,
>
[quoted text clipped - 30 lines]
>
> Mike
Michael Gold - 25 Oct 2007 14:00 GMT
> When doing a big delete you should set change tracking to scheduled mode
> instead of index in background. You might also find that a full-population
[quoted text clipped - 47 lines]
>
> > Mike
Hilary,
Thanks for the suggestions. I actually mispoke when I said we have
change tracking set to manual. It is actually disabled, and we do a
full re-indexing every night.
Hilary Cotter - 26 Oct 2007 15:50 GMT
Full indexing only makes sense when a large portion of your datachanges at
any one time. Incremental populations can sometimes work better than full
depending on the amount of data deleted. For example if its 90% full would
probably work better, if its 20% incremental could, if its smaller than that
change tracking will work better. You need to test to see what works best
for you.
You need a timestamp column on your table otherwise an incremental
population will not be done and a full one will be done instead.

Signature
RelevantNoise.com - dedicated to mining blogs for business intelligence.
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
>> When doing a big delete you should set change tracking to scheduled mode
>> instead of index in background. You might also find that a
[quoted text clipped - 59 lines]
> change tracking set to manual. It is actually disabled, and we do a
> full re-indexing every night.