Speed issues using items.restrict on exchange

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I read on Dmitri's Redemption site that Exchange cache's items.restrict
calls, and that using this method too frequently can slow an exchange server
significantly.

I can't find any reference to this anywhere else... or any advice on when to
use restrict and when to use filter/find/find next.

I suspect that some code on a customers site (that I didn't write) is using
items.restrict as part of a search process which is used regularly on a large
(15000+ ) public contact folder - which in turn maybe slowing the system.

Does anyone have any comments on rules of thumb for using items.restrict so
as not to 'bring a server to its knees' (in Dmitri's words)
 
Dmitry can correct me if I'm wrong but I've never run into a problem with
either Items.Restrict or Items.Find with cached restrictions on the server.
Where I have run into problems is when I've used a Restrict on a MAPITable
and the filter uses something like a date value that changes, for example
testing for something related to today's date. That changes every day and
the restriction would be cached for a default of 8 days (changeable on the
EX server).

I tested for that and ended up with over 10,000 restrictions cached on my
server and even with only 2 active mailboxes it was taking over 10 minutes
to even switch from one item to another in Outlook until I ran code on the
server to kill the cached restrictions.

Also see http://support.microsoft.com/kb/216076
 
Yes, the problem is not using the restrictions too much (that is exactly why
Exchange caches restrictions), but applying *different* restrictions.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

Ken Slovak - said:
Dmitry can correct me if I'm wrong but I've never run into a problem with
either Items.Restrict or Items.Find with cached restrictions on the
server. Where I have run into problems is when I've used a Restrict on a
MAPITable and the filter uses something like a date value that changes,
for example testing for something related to today's date. That changes
every day and the restriction would be cached for a default of 8 days
(changeable on the EX server).

I tested for that and ended up with over 10,000 restrictions cached on my
server and even with only 2 active mailboxes it was taking over 10 minutes
to even switch from one item to another in Outlook until I ran code on the
server to kill the cached restrictions.

Also see http://support.microsoft.com/kb/216076
 
Thanks Guys - especially for the link to the support article. I'd looked and
looked but not found this.

The restrict filter would be used as part of a search routine to search for
different names. So for example items.restrict("[FullName] = " &
FullNameVariable ) or whatever the correct syntax is - you get the point.

So different restrictions would indeed be run by several users maybe 50 or
100 times a day to find information associated with different contacts. From
what you are saying this could slow down the server.

I think I'll go ahead and recommend the fix in the support article and see
if that makes any impact. Your time and experience are much appreciated
--
Custom Business Solutions using Microsoft Outlook
www.davton.com


Dmitry Streblechenko said:
Yes, the problem is not using the restrictions too much (that is exactly why
Exchange caches restrictions), but applying *different* restrictions.

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
Again, in my experience I've had no problems with Items.Restrict, only with
MAPITable.Restrict. I suppose you could set up a bunch of Items.Restrict's
and look on the server using the information in that article and see if
those are being cached on the server.
 
Which Outlook version did you use for testing? I remember my experiements in
Outlook 2000 (didn't check with a later version) where Items.Restrict did
cause problems. I wonder if Items.Restrict implementation was changed to use
IMAPITable::FindRow in later versions of Outlook...

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool

Ken Slovak - said:
Again, in my experience I've had no problems with Items.Restrict, only
with MAPITable.Restrict. I suppose you could set up a bunch of
Items.Restrict's and look on the server using the information in that
article and see if those are being cached on the server.




David Tongeman said:
Thanks Guys - especially for the link to the support article. I'd looked
and
looked but not found this.

The restrict filter would be used as part of a search routine to search
for
different names. So for example items.restrict("[FullName] = " &
FullNameVariable ) or whatever the correct syntax is - you get the point.

So different restrictions would indeed be run by several users maybe 50
or
100 times a day to find information associated with different contacts.
From
what you are saying this could slow down the server.

I think I'll go ahead and recommend the fix in the support article and
see
if that makes any impact. Your time and experience are much appreciated
 
Back
Top