MySQL database development
MySQL runs an enormous share of the web, including most of the WordPress and Laravel estate. It is straightforward, fast on read-heavy workloads and supported by every host you might use.
Where we use MySQL
MySQL is part of the stack on these 2 services. Each page covers how we work, what you get and what it costs to start.
MySQL in practice
MySQL runs an enormous share of the web, and its ubiquity is a practical advantage: every host supports it, every framework assumes it, and almost every backend developer can work with it. For read-heavy workloads with straightforward relationships it performs excellently and operates simply.
Where it gives ground to PostgreSQL is in constraint enforcement, advanced query features and JSON handling. That matters if your data model is complex or several services write to the same database. If neither is true, migrating an application that works is usually a cost with no return — we say so rather than recommending a project.
What we build with MySQL
The data layer behind WordPress, WooCommerce and custom PHP applications.
Products where most traffic is reads and replication is the natural way to scale.
RDS, Cloud SQL and Azure Database instances configured with backups, monitoring and a tested restore path.
Is MySQL right for you?
Ask usA good fit when
- WordPress, WooCommerce and PHP application backends
- Read-heavy workloads that scale through replication
- Teams and hosting already standardised on it
- Straightforward relational models without exotic requirements
Probably not when
- Complex analytical queries and heavy JSON work
- Data models needing strict constraint enforcement
- Workloads that would benefit from Postgres extensions
What we run alongside MySQL
The rest of the setup, and why each piece is there. We keep this list short on purpose — every dependency is something someone has to maintain.
- InnoDB
- The engine that gives you transactions and row-level locking. Not optional.
- ProxySQL
- Connection pooling and read/write splitting once replicas are in play.
- Percona Toolkit
- Schema changes on large tables without locking them out of service.
- Managed hosting
- RDS, Cloud SQL or Azure Database, so failover and backups are not your problem.
- slow_query_log
- The starting point for every performance investigation.
Why MySQL
Let’s talkUniversally supported
Every hosting provider, framework and ORM works with it, which keeps operational choices simple.
Fast reads
Well-indexed read workloads perform excellently, and replication for read scaling is well-trodden ground.
Easy to staff
Almost every backend developer can work with it, so operational knowledge is never concentrated in one person.
What we get called in to fix
Get a second opinionMissing or wrong indexes
The dominant cause of slow MySQL. Often a composite index in the wrong column order.
SELECT * everywhere
Fetching every column including large text fields, on pages that display three of them.
Replication lag
Reads hitting a replica that is behind, so users see their own writes disappear.
utf8 that is not UTF-8
Legacy schemas on utf8mb3, which breaks emoji and some scripts. A migration, but a well-trodden one.
MySQL or the alternative
The comparisons we are actually asked to make, answered the way we would answer them on a call.
Postgres for complex queries, constraints and JSON. MySQL when it already works and the model is simple — migration needs a reason.
Largely interchangeable for application work. Follow whatever your hosting and team already run.
Replication solves read scaling and is simple. Sharding solves write scaling and is a significant architectural commitment.
MySQL works well with:
Got an idea? Let’s make it real.
Tell us the short version
This could be the first step towards a new and successful collaboration. A one-line idea and a finished spec are both fine — tell us the problem, the deadline you’re working to and what’s in your way.
Keep looking
Frequently asked questions
Only with a reason — complex queries, JSON needs or constraint requirements. Migration for its own sake is not worth the risk.
Largely interchangeable for application work. We follow whatever your hosting and team already standardise on.
Usually. Most cases come down to missing indexes, N+1 query patterns or a schema fighting the access pattern.
Only with a specific reason. A working database is not a problem to solve, and the migration risk is real.
Usually. Most cases resolve to indexing, query patterns or a schema fighting how the data is actually read.