« Mixen met Notes/Domino-versies: wat is supported? | Main| Notes User Interface items duiken overal op (updated) »

Notes database performance en local cache

Category
Bookmark : del.icio.us  Technorati  Digg This  Add To Furl  Add To YahooMyWeb  Add To Reddit  Add To NewsVine 


Bij een klant ben ik al geruime tijd bezig met het proberen te verbeteren van de performance van hun belangrijkste Notes applicatie. Belangrijke performance winst had ik al bereikt door het aanpassen van de subforms, het optimaliseren van views en het tunen van de server maar vandaag heb ik nog een belangrijk winstpunt gevonden: de local cache.....

Als je een database op een Domino server opent worden er diverse design elementen geladen. Om ervoor te zorgen dat niet iedere keer de design elementen van de server hoeven te worden geladen gaat Notes proberen om de design elementen op te slaan in een lokale cache database: cache.ndk. Standaard zit er echter een quota van 30 MB op de cache.ndk en dat is met een aantal flinke applicaties al snel niet meer voldoende. Als de database 30 MB is worden er geen nieuwe design elementen meer in de cache opgenomen en dus moeten die elementen bij ieder gebruik van de server worden geladen.

cache.ndk is overigens een gewone Notes database die gewoon geopend kan worden in Notes. Je ziet dan een overzicht van alle design elementen die in de cache aanwezig zijn.

Door bij deze klant de cache flink te vergroten is in de betreffende applicatie een bepaalde workflow die eerst 2 minuten in beslag nam nu in 1 minuut klaar........

Een gebruiker kan de cache zelf vergroten door op de workspace (wat! workspace.... jakkes ) rechts te klikken, WorkSpace Properties te selecteren en vervolgens op de tweede tab de 30 MB te verhogen.

A picture named M2

Maar eigenlijk wil je dat natuurlijk niet door een eindgebruiker laten doen. Bij deze klant heb ik daarom gebruikers een mail gestuurd met een knop erin die de cache quota verhoogd. Dit is de code:

Sub Click(Source As Button)
        Dim session As New Notessession
        Dim db As NotesDatabase
        Set db = session.getdatabase("", "cache.ndk")
        'verhoog quota naar 300 MB
        db.SizeQuota = 307200
        db.SizeWarning = 0

        'zet de quota size ook in de notes.ini voor als er een nieuwe cache.ndk wordt aangemaakt
        Call session.SetEnvironmentVar( "InitialCacheQuota", "307200",True )

End Sub

Comments

Gravatar Image1 - Stoer hoor.
Maar het stukje code kan geoptimaliseerd worden als je eerst de notes.ini variabele uitleest waar de cache.ndk staat ( als aanwezig ). Bij sommige bedrijven staat de cache.ndk namelijk niet in de data dir van notes maar bv in de temp dir van de user.

Gravatar Image2 - Goeie tip!

Gravatar Image3 - Voor het eerst dat ik deze blog echt bekijk. Top tip!
Alleen vraag ik me af of deze code bij ons werkt. De data staat bij ons op de server onder eigengebruikersnaam. Wel een vaste locatie (H:\Notes) geen "data" map. Als je nog suggesties hebt m.b.t. een code?!
Wij werken met LN 7.0.1
Emoticon

Gravatar Image4 - Yvo,

ja hoor, dt is geen probleem. Als je de volgende code gebruikt wordt er eerst gecontroleerd of de cache buiten de Notes data directory staat.

Sub Click(Source As Button)
Dim session As New Notessession
Dim db As NotesDatabase

location = session.GetEnvironmentString( "Cache",True )

If location = "" Then
Set db = session.getdatabase("", "cache.ndk")
Else
Set db = session.GetDatabase("",location)
End If

'verhoog quota naar 100 MB
db.SizeQuota = 102400
db.SizeWarning = 0

'zet de quota size ook in de notes.ini voor als er een nieuwe cache.ndk wordt aangemaakt
Call session.SetEnvironmentVar( "InitialCacheQuota", "102400",True )

End Sub

Overigens, je geeft aan dat bij jullie de cache in de home directory van de gebruikers staat. Dat is een van de grootste performance killers voor Notes!! De cache file wordt heel frequent gelezen en geschreven en die wil je eigen altijd op een lokale schijf opslaan.

Dit kun je regelen door in de notes.ini b.v. cache=c:\temp\cache.ndk op te nemen.

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

OpenNTF random projects

PlanetLotus