Implementing Performance Optimization Patterns

1. Asynchronous Communication Pattern

AspectDetail
BenefitCaller does not block; throughput improves
Use ForNon-immediate work (notifications, indexing)
WatchoutEventual consistency UX

2. Response Compression Pattern

AlgoWhen
gzipUniversal default
br (Brotli)Static text; better ratio
zstdLarge dynamic payloads; fastest decompress
No compressionAlready-compressed (images, video)

3. Connection Pooling Pattern

ParamDetail
maxConnectionsBounded by upstream capacity
minIdleWarm pool to avoid cold-start
connectionTimeoutWait time for free connection
maxLifetimeRecycle to avoid stale connections
idleTimeoutClose unused connections
ToolsHikariCP (JDBC), c3p0, pgbouncer

4. Request Batching Pattern

AspectDetail
MechanismCombine N small requests into one
TriggerTime window OR batch size threshold
Use CasesDB writes, API calls, log shipping, GraphQL DataLoader
Trade-offLatency (wait) vs throughput

Example: GraphQL DataLoader

const userLoader = new DataLoader(async (ids) => {
  const users = await db.users.findByIds(ids);
  return ids.map(id => users.find(u => u.id === id));
});
// 100 calls to userLoader.load(id) within tick → 1 SQL query for all 100

5. Lazy Loading Pattern

AspectDetail
DefinitionDefer loading data until accessed
ExamplesJPA lazy fetch, lazy initialization, lazy import
PitfallN+1 query problem; LazyInitializationException

6. Prefetching Pattern

AspectDetail
MechanismLoad data before it's actually requested (predicted)
ExamplesPage prefetch, JOIN FETCH, Kafka consumer prefetch
RiskWasted bandwidth/memory if prediction wrong

7. Resource Pooling Pattern

ResourcePool Type
DB ConnectionsHikariCP, pgbouncer
HTTP ClientsOkHttp, Apache HttpClient
ThreadsThreadPoolExecutor; virtual threads (Java 21+)
BuffersNetty PooledByteBufAllocator
Object PoolsApache Commons Pool

8. Denormalization Pattern

AspectDetail
DefinitionDuplicate data to avoid joins
WhenRead-heavy, latency-sensitive workloads
CostSync complexity on writes; eventual consistency
ImplementationMaterialized views, embedded documents (Mongo), CQRS read models

9. Index Optimization Pattern

Index TypeUse
B-TreeEquality + range; default
HashEquality only; faster for large cardinality
GIN / GiST (Postgres)Full-text, JSONB, geo
CompositeMulti-column WHERE; left-prefix rule
CoveringINCLUDE columns for index-only scans
PartialWHERE clause limits index size
Warning: Every index slows writes. Audit unused indexes (pg_stat_user_indexes.idx_scan = 0).

10. Parallel Processing Pattern

ApproachDetail
Fork-JoinSplit task; combine results (Java ForkJoinPool)
MapReduceDistribute across nodes
Parallel StreamsJava stream().parallel() (CPU-bound only)
Async PipelinesCompletableFuture chains
Virtual ThreadsJava 21+ for I/O-heavy concurrency