/** * Index Analytics and Performance Monitoring * * Tracks index usage, query performance, and generates optimization recommendations. * Uses Rust implementation via WASM for performance-critical operations, * with TypeScript fallback when WASM unavailable. */ export interface IndexMetrics { name: string; reads: number; writes: number; hitRate: number; avgQueryTimeMs: number; avgWriteTimeMs: number; entries: number; lastUsedAt: number; createdAt: number; } export interface QueryTrace { timestamp: number; fields: string[]; operator: string; indexUsed?: string; executionTimeMs: number; rowsScanned: number; resultCount: number; } export interface PerformanceReport { collectionName: string; period: 'hourly' | 'daily' | 'weekly'; totalQueries: number; indexedQueries: number; fullScans: number; avgQueryTimeMs: number; slowestQuery?: QueryTrace; indexMetrics: IndexMetrics[]; recommendations: TuningRecommendation[]; timestamp: number; } export interface TuningRecommendation { type: 'create_index' | 'drop_index' | 'optimize_index'; priority: 'high' | 'medium' | 'low'; indexName?: string; reason: string; expectedSpeedup?: number; estimatedROI?: number; } /** * Tracks index usage and query performance. */ export declare class IndexAnalytics { private metrics; private queryTraces; private fieldQueryCount; private maxTraces; /** * Record an index usage event. */ recordIndexUsage(indexName: string, operation: 'read' | 'write', timeMs: number): void; /** * Record a query execution. */ recordQuery(fields: string[], operator: string, executionTimeMs: number, rowsScanned: number, resultCount: number, indexUsed?: string): void; /** * Get metrics for an index. */ getIndexMetrics(indexName: string): IndexMetrics | null; /** * Get all index metrics. */ getAllMetrics(): IndexMetrics[]; /** * Get query traces (for performance analysis). */ getQueryTraces(limit?: number): QueryTrace[]; /** * Get slowest queries. */ getSlowestQueries(limit?: number): QueryTrace[]; /** * Get most frequently queried fields. */ getFrequentFields(limit?: number): Array<[string, number]>; /** * Calculate hit rate for an index. */ calculateHitRate(indexName: string): number; /** * Generate performance report. */ generateReport(collectionName: string, period?: 'hourly' | 'daily' | 'weekly'): PerformanceReport; /** * Generate tuning recommendations based on usage patterns. */ private generateRecommendations; /** * Reset analytics (for testing or period rollover). */ reset(): void; } /** * Automatic tuning engine - applies recommendations automatically. */ export declare class AutoTuner { private analytics; private appliedRecommendations; constructor(analytics: IndexAnalytics); /** * Check if a recommendation should be auto-applied. */ shouldAutoApply(recommendation: TuningRecommendation): boolean; /** * Apply a recommendation. */ applyRecommendation(recommendation: TuningRecommendation): boolean; /** * Get recommendations that are ready for auto-apply. */ getAutoApplyableRecommendations(report: PerformanceReport): TuningRecommendation[]; } //# sourceMappingURL=index-analytics.d.ts.map