| Database queries and indexing |
Slow queries, high CPU usage, timeouts |
Optimize queries, add or remove indexes |
| Slow disk I/O |
Slowness even when CPU is low, delays during heavy writes |
Use faster storage, reduce heavy write operations |
| Network latency |
Delays between app and database, inconsistent response times |
Reduce network round trips, optimize network setup |
| Locking and concurrency |
Random slowdowns, queries waiting on other queries |
Shorter transactions, better isolation levels |
| Scaling and load limitations |
Performance drops under load, spikes cause failures |
Horizontal scaling, load balancing |
| Resource contention |
Unpredictable performance, sudden spikes |
Allocate resources, tune competing workloads |
| Inefficient data models |
Complex queries, many joins, hard to optimize |
Review schema, avoid over-normalization |
| Unoptimized data retrieval |
Slow pages, high memory usage |
Pagination, fetch only needed columns |
| Denormalization issues |
Data duplication, increased complexity |
Careful and intentional denormalization |
| Inadequate caching |
Repeated database load, slow repeated actions |
Add database or application-level caching |
| Security and authentication |
Latency during authentication or authorization |
Optimize authentication mechanisms |
| Long transactions |
Blocking, cascading slowdowns |
Split transactions, commit earlier |
| Monitoring and tuning gaps |
Issues discovered late, unclear root causes |
Add monitoring, query analysis, alerts |
| Database maintenance |
Gradual performance degradation |
Regular maintenance and cleanup |
| Hardware limitations |
Constant resource saturation |
Upgrade or resize hardware |