An interactive playground for learning MySQL performance, features, and best practices.
Each lab demonstrates a specific concept using Java + Dockerized MySQL.
git clone <repo-url>
cd mysql-lab
docker compose up -d # start MySQL in Docker
mvn compile- MySQL runs inside Docker (
labdbdatabase, user:labuser/ pass:labpass). - Java programs connect to it using JDBC and measure performance.
- Good Index Benchmark
High-cardinality column (
name) → index makes queries much faster. - Bad Index Benchmark
Low-cardinality column (
department) → index actually slows queries down.
Run:
# Good index demo
mvn exec:java -Dexec.mainClass="IndexBenchmark"
# Bad index demo
mvn exec:java -Dexec.mainClass="BadIndexBenchmark"I'll be adding labs for:
- Joins & query plans
- Transactions & isolation levels
- Deadlocks & locks
- Stored procedures
- Partitioning
- Replication basics
mysql-lab/
├── docker-compose.yml # MySQL in Docker
├── pom.xml # Maven project setup
├── indexing/ # Index-related lab
│ ├── IndexBenchmark.java
│ ├── BadIndexBenchmark.java
│ └── README.md
└── ... more labs coming soon ...
- How to measure and interpret query performance.
- When and why indexes help (or hurt).
- How to read MySQL
EXPLAINplans. - Core concepts of MySQL internals step by step.