---
issue: 123
title: "Backend: notification unread-count chatty DB access — 3 parallel countDocuments per event"
severity: low
domain: Notification
labels: [performance, backend, database]
status: open
created: 2026-05-30
source: Full Codebase Audit 2026-05-30
---

# Backend: notification unread-count chatty DB access — 3 parallel countDocuments per event

**Severity:** low
**Domain:** Notification
**Labels:** performance, backend, database

## Description

`NotificationService.ts:145` runs 3 `countDocuments` calls per unread-count request. When notification events are frequent, this creates a high volume of DB count queries. Under heavy load, these compete with write operations.

## Options

1. Cache per-user unread count in Redis, increment/decrement on events.
2. Coalesce the 3 parallel `countDocuments` into fewer aggregations.
3. Leave as-is (covered by existing index) and only optimize if hot.

## Recommendation

Introduce a Redis-backed unread counter updated incrementally; until then, coalesce counts.

## Affected Files

- `backend/src/services/notification/NotificationService.ts:145`

## References

- [Full Codebase Audit 2026-05-30](../09%20-%20Audits/Full%20Codebase%20Audit%20-%202026-05-30.md) — DEC-44
