If your microservices share a database, you have Distributed Monolith. Real microservices own their schema and their storage mechanism.
When each service has its own DB, Team A can migrate their SQL schema without Team B even knowing. One service can use **Postgres** for complex queries, while another uses **MongoDB** for high-write logging. This 'Polyglot Persistence' allows you to pick the right tool for each specific job.
You lose **ACID Transactions** across the whole system. You can't wrap a 'Place Order' and 'Charge Card' in a single SQL transaction if they are in different databases. We solve this using the **Saga Pattern** or **Eventual Consistency**—trading immediate consistency for high availability.
Q: "Should every microservice have its own PHYSICAL database server?"
Architect Answer: "Not necessarily. For an MVP, you can have 1 physical SQL server with separate **Logical Databases** (schemas) for each service. The key is that Service A **NEVER** queries Service B's tables directly. Once you scale, you can easily move those logical databases to separate physical hardware without changing a single line of code in the services."