Search code examples
performancelotus-noteslotus-dominolotusscript

How to improve notes database performance?


I have a lotus notes database which has almost 34,000 documents in it, with a bunch of views almost 200. Thus performance is a major issue for me.

I have tried a couple of tricks such as:

  1. Create indexes on server using Ctrl + Shift + F9
  2. I run a scheduled agent on the database that runs every 3 hours the code is simple refresh each view
Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView

    Set db = session.currentdatabase
    ForAll v In db.views
        v.refresh
    End ForAll
End Sub

But they don't seem to work that well? Any ideas or suggestion to improve performance on local and server copy will be great?

Also to let you know I have like 100 users who makes update at different intervals maybe 10-20 users per day.


Solution

  • There are many possible reasons for poor performance, and many things that we could suggest. For example, we could talk about disk fragmentation. We could discuss what Domino version you have (which you didn't mention) and possible upgrades. We could discuss your server's i/o subsystem...

    But the first and most glaringly obvious issue is that you have too many views!! The fact is that 30,000 documents is not at all unreasonable for a Notes database, even with a decent amount of new and edited documents per day. On a properly designed and maintained database on fairly basic hardware, this should perform just fine. I've seen databases with 100,000 or more docs with tens of thousands of new and deleted docs every day perform okay, but I've also seen them perform badly if, for example, deletion stubs weren't being purged often enough.

    But I've digressed.... You have too many views, plain and simple. That's where you have to start. No matter what else you do, I can guarantee that a database with 200 views will perform poorly compared to a database with 20 views. Some of your views may indeed be problems all by themselves due to poor design, so you need to look at every single one of them; but even before you look at the design, you have to ask: why is this view here? Who needs it? If I remove it, will anyone notice? Is there a different view or a better way to meet whatever needs this view meets?