Add runtime statistics via engine.stats
This commit is contained in:
+13
-1
@@ -5,13 +5,21 @@ from loguru import logger
|
||||
from .cache import CacheManager
|
||||
from .parser import ParsedQuery
|
||||
from .registry import ColumnRegistry
|
||||
from .stats import StatsCollector
|
||||
|
||||
|
||||
class QueryExecutor:
|
||||
def __init__(self, cache: CacheManager, registry: ColumnRegistry, source_conn: sqlite3.Connection) -> None:
|
||||
def __init__(
|
||||
self,
|
||||
cache: CacheManager,
|
||||
registry: ColumnRegistry,
|
||||
source_conn: sqlite3.Connection,
|
||||
stats: StatsCollector,
|
||||
) -> None:
|
||||
self._cache = cache
|
||||
self._registry = registry
|
||||
self._source_conn = source_conn
|
||||
self._stats = stats
|
||||
|
||||
def execute(self, parsed: ParsedQuery) -> list[dict]:
|
||||
table = parsed.table
|
||||
@@ -26,11 +34,15 @@ class QueryExecutor:
|
||||
f"Re-fetching {table!r} — new columns requested: {missing}. "
|
||||
f"Expanding cache from {self._registry.get_columns(table)} + {missing}"
|
||||
)
|
||||
self._stats.record_refetch()
|
||||
else:
|
||||
self._stats.record_miss()
|
||||
all_columns = list(self._registry.get_columns(table)) + missing
|
||||
self._cache.load_table(table, all_columns, self._source_conn)
|
||||
self._registry.update(table, all_columns)
|
||||
else:
|
||||
logger.debug(f"Cache hit: {table!r} columns={columns}")
|
||||
self._stats.record_hit()
|
||||
|
||||
return self._run_in_memory(parsed)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user