Get Eulanda Registry Cache Stats
Zuletzt geändert: 19.04.2026 03:03

Übersicht

Get-EulandaRegistryCacheStats #

ÜBERSICHT #

Liefert Session- und Lifetime-Statistik des RegCache (Hits, Misses, Populates, Writes, Blobs) samt berechneter Hit-Rate. Für Benchmarks und Ops-Monitoring.

SYNTAX #

Get-EulandaRegistryCacheStats [[-Conn] <__ComObject>] [[-Udl] <string>] [[-ConnStr] <string>]
    [<CommonParameters>]

BESCHREIBUNG #

Zwei Ebenen:

  • Session: In-Memory-Zähler im Modul-Scope. Werden bei jedem Cache-Zugriff inkrementiert und beim Modul-Unload verworfen. Immer verfügbar, auch ohne Connection.
  • Lifetime: Persistente Zähler im _stats-Subkey der Hive-Datei, pro Datenbank (DbKey). Wachsen über alle PS-Sessions hinweg, werden vor jedem Hive-Close additiv aktualisiert. Nur verfügbar, wenn eine Connection übergeben und der Modus Hive ist.

Die Hit-Rate ergibt sich aus Hits / (Hits + Misses) * 100 und liegt nur vor, wenn mindestens ein Cache-Zugriff stattgefunden hat.

Im Modus Off oder Legacy-Fallback zählen die Session-Counter nicht (LegacyStore macht keine Statistik). Das Ergebnis hat dann nur den aktuellen Modus und Null-Zähler - das ist kein Fehler, sondern Indiz, dass der Cache deaktiviert bzw. degradiert ist.

PARAMETER #

-Conn #

Type: __ComObject

Offene ADODB.Connection. Optional - ohne Connection werden nur die Session-Counter geliefert, die Lifetime-Sektion bleibt $null.

-Udl #

Type: string

Alternative zur Connection: Pfad zu einer UDL-Datei.

-ConnStr #

Type: string

Alternative zur Connection: OLEDB-ConnectionString.

AUSGABEN #

[System.Collections.Specialized.OrderedDictionary]

Mode : 'Off' | 'Hive' | 'Legacy-Fallback' TtlHoursDefault : 48 (Default-TTL für frisch populated Subtrees) Session : @{ Hits; Misses; Populates; Writes; Blobs; HitRate } Lifetime : @{ Hits; Misses; Populates; Writes; Blobs; FirstSeen; # ISO-Timestamp des ersten Cache-Starts Age; # TimeSpan seit FirstSeen HivePath; # absoluter Pfad zur Hive-Datei DbKey; # 16-Hex-Key der zugehörigen DB HitRate } oder $null wenn keine Conn übergeben bzw. Modus != 'Hive' Hinweis: Das “Ablaufdatum” des Cache ist nicht global, sondern pro populated Subtree (Werte __EULXT_FetchedAt__ plus __EULXT_TtlHours__ auf dem jeweiligen Root-Subkey). TtlHoursDefault zeigt den Startwert für frisch populated Subtrees. Wer Subtree-granulare Abläufe braucht, sollte separat ein Get-EulandaRegistryCacheEntries nachrüsten (aktuell nicht vorhanden).

BEISPIELE #

# Kurzer Session-Blick ohne DB-Zugriff
Get-EulandaRegistryCacheStats

# Ausgabe (nach einigen Get-CompanyMasterData-Aufrufen):
# Name                           Value
# ----                           -----
# Mode                           Hive
# Session                        {Hits, Misses, Populates, Writes...}
# Lifetime
# Voller Stand mit Lifetime-Countern aus der Hive-Datei
$stats = Get-EulandaRegistryCacheStats -Conn $conn
"Session-HitRate : {0,6:N2} %" -f $stats.Session.HitRate
"Lifetime-HitRate: {0,6:N2} %" -f $stats.Lifetime.HitRate
"Erster Cache-Start: {0}"     -f $stats.Lifetime.FirstSeen
# Benchmark-Pattern: vor dem Messen zurücksetzen, dann messen
Clear-EulandaRegistryCache        # optional, frischer Cache
$before = Get-EulandaRegistryCacheStats -Conn $conn
Measure-Command { 1..100 | ForEach-Object { Get-CompanyMasterData -Conn $conn } }
$after  = Get-EulandaRegistryCacheStats -Conn $conn
"Neu-Hits:      $($after.Session.Hits - $before.Session.Hits)"
"Neu-Populates: $($after.Session.Populates - $before.Session.Populates)"

HINWEISE #

Zähl-Logik liegt im HiveStore (siehe New-EulRegHiveStore). Die Lifetime-Persistenz passiert bei Sync-EulRegHiveToDisk (Close+Reopen). LegacyStore zählt nichts - korrektes Verhalten bei Off/Fallback.