Database Bottlenecks Every Internal PM Should Recognize


Hi Reader,

If you have ever taken over an internal product with
old architecture,
a complex SQL database,
and very little documentation…

You have probably worried about database performance.

I have been there.

And when the database struggles, everything struggles.

Because if your database is slow or unstable, your app is effectively down.

I am not a database expert.
But over time, I learned the high-level basics that help me investigate problems, ask better questions, and stop guessing.

That is what I want to share today.

Today in 10 minutes you will:

  • Understand the most common database bottlenecks
  • Learn how they usually show up in real life
  • Follow a solid investigation pattern
  • Walk away with a one-page summary you can reuse

My most recent database investigation


I recently took over a very old custom internal product.

The symptoms looked like this:

→ RAM usage suddenly spikes
→ CPU stays mostly fine
→ The app becomes slower and slower
→ A restart fixes it temporarily

What helped was not restarting faster.

What helped was understanding all the different things that can cause database bottlenecks, and ruling them out one by one.

A solid investigation pattern

This is the order I follow now.

1. Start with user symptoms

Before dashboards, ask:

→ Is the app slow, unavailable, or timing out?
→ Does it degrade over time or fail suddenly?
→ Does a restart help?

This already hints at memory, connections, or long transactions.


2. Check CPU

High CPU usually means too much work.

→ Constantly high CPU
→ Spikes during peak usage

Often caused by inefficient queries or missing indexes.


3. Check memory (RAM)

Important rule:

High RAM usage alone is not always bad.

Databases intentionally use memory for caching.

It becomes a problem when:

→ RAM keeps growing and never drops
→ Performance degrades over time
→ Swapping starts
→ Restarts fix things


4. Check connections

Very common in internal tools.

→ Too many open connections
→ No pooling
→ Connections not released properly

This often explains RAM pressure with normal CPU.


5. Look at queries

Only now do we zoom in.

→ Long-running queries
→ Queries pulling too much data
→ Missing indexes


6. Look at disk and I/O

Especially relevant for older systems.

→ Slow reads or writes
→ Batch jobs impacting users
→ Backups causing slowness


7. Look at locking and transactions

If performance feels random:

→ Queries waiting on each other
→ Writes blocking reads
→ Long transactions holding locks


The top 10 database bottlenecks explained simply

These are the ten most common ones PMs usually run into.

1. Inefficient database queries and indexing

Queries do more work than necessary.

Shows up as:
→ Slow responses
→ High CPU
→ Timeouts



2. Slow disk I/O

The database waits too long to read or write data.

Shows up as:
→ Slowness even with low CPU
→ Problems during heavy writes or reports


3. Network latency

The database itself is fine, but data travels slowly.

Shows up as:
→ Delays between app and database
→ Inconsistent response times



4. Locking and concurrency issues

Queries block each other.

Shows up as:
→ Random slowdowns
→ Requests waiting on other requests


5. Scaling and load limitations

The database cannot handle the current load.

Shows up as:
→ Performance drops under traffic
→ Spikes cause failures


6. Resource contention

Multiple workloads fight for the same resources.

Shows up as:
→ Unpredictable performance
→ Spikes without a clear cause


7. Inefficient data models

The schema makes queries more complex than needed.

Shows up as:
→ Too many joins
→ Hard-to-optimize queries


8. Unoptimized data retrieval

Too much data is fetched.

Shows up as:
→ Slow pages
→ High memory usage


9. Inadequate caching

The same expensive queries run again and again.

Shows up as:
→ Repeated database load
→ Slow responses for common actions


10. Long transactions

Transactions stay open too long.

Shows up as:
→ Locks
→ Cascading slowdowns
→ Other queries waiting


Is this actually part of my PM job?

I know, I know.

Digging into database and technical topics does not sound fun to everyone.
And you might be thinking:

Why am I doing this as a product manager?

Here is the reality.

If you have experienced developers and operations engineers on your team, and they can quickly troubleshoot, explain what is happening, and recommend the right fix, perfect. Let them do it.

But many internal PMs do not work in that setup.

Sometimes:
→ the team is understaffed
→ the most experienced engineer is on vacation
→ you are working with vendors
→ or you inherited a legacy product with very little context

And suddenly, you are the first line of investigation.

In those moments, knowing these basics helps you:
→ ask the right questions
→ collect the right signals before restarting systems
→ avoid panic-driven decisions
→ and move the conversation forward instead of blocking it

There is another benefit people often overlook.

Understanding database bottlenecks also changes how you work before things break.

It influences:
→ how you design new features with engineering
→ how you think about performance and scalability
→ how you prioritize and explain technical debt
→ and where you push for improvements early, instead of firefighting later

You do not need to become a database expert.

But having this mental model makes you a much stronger PM in real internal environments.

Summary: database bottlenecks, symptoms, and fixes

Summary: database, symptoms, and fixes

You can download the whole table from my Notion page here.

Behind the Scenes

I just came back from my parents’ home in Saint Petersburg.

It was nice to experience snow again and a very different kind of winter.
The city was full of people preparing for the holidays. Busy streets, lights everywhere, that end-of-year energy.

At the same time, I am happy to be back in Frankfurt.
Where going outside does not automatically mean three layers and a full winter strategy.

What do you think?

Have you ever inherited a product where the database felt like a black box?

Hit reply and tell me:
→ What was the symptom?
→ And what finally helped you understand it?

See you next week,

Maria

Frankfurt am Main, 60311, Germany
Unsubscribe · Preferences

Maria Korteleva

Hi, I’m Maria. For the past 7 years, I’ve been building internal products across FMCG and tech companies.Now, I share everything I’ve learned to help junior PMs master delivery from technical skills to stakeholder communication. Join 80+ Internal PMs who get weekly insights from the Build Internal Products newsletter.

Read more from Maria Korteleva

Hi Reader, I love this time of year. There’s a pause. A bit of breathing room. And finally… space to think. Not just about work. But about how I want to show up next year at work, outside of work, and in life in general. Yes, this might sound like another reflection or goal-setting post. But this one isn’t theory. It’s not a framework I found online. It’s how I, as an internal product manager, decide what to focus on… without trying to improve everything at once. Today in 10 minutes you will:...

Hi Reader, have you ever heard your colleagues working on B2B or B2C products talk about go-to-market and wondered: Should I have that too?And if yes… what would it even look like for an internal product? I’ve been there. For a long time, I thought GTM was something only external products needed.Marketing campaigns. Sales decks. Pricing pages. But over the years, I learned this the hard way: Internal products also need a go-to-market strategy. It looks different from external GTM, that’s for...

Hi Reader, are you a people pleaser?Do you avoid saying no because you’re afraid leadership will see you as unhelpful?Do you end up juggling 10 tasks at once… stressed, scattered, and still feeling like it’s never enough? If this feels a bit too familiar… today’s issue is for you. Because saying no is not career suicide.Not saying no is. Today in 10 minutes you will: Hear my personal story of learning to say no Understand how leadership actually perceives it Learn how to say no without...