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 ModusHiveist.
Die Hit-Rate ergibt sich aus Hits / (Hits + Misses) * 100 und liegt nur vor, wenn mindestens ein Cache-Zugriff stattgefunden hat.
Im ModusOffoderLegacy-Fallbackzä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.