0
0
Ruby on Railsframework~8 mins

Running and rolling back migrations in Ruby on Rails - Performance & Optimization

Choose your learning style9 modes available
Performance: Running and rolling back migrations
MEDIUM IMPACT
This concept affects the database schema update speed and application startup time during deployment.
Updating database schema during deployment
Ruby on Rails
rails db:migrate
Runs only pending migrations, reducing downtime and database locking.
📈 Performance Gainreduces blocking time to only necessary schema changes
Updating database schema during deployment
Ruby on Rails
rails db:migrate:reset
Running all migrations every time can cause unnecessary delays and locks if many migrations exist.
📉 Performance Costblocks deployment for several seconds to minutes depending on migration count
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Running all migrations every deployN/AN/AN/A[X] Bad
Running only pending migrationsN/AN/AN/A[OK] Good
Rolling back many migrations at onceN/AN/AN/A[X] Bad
Rolling back one migration at a timeN/AN/AN/A[OK] Good
Rendering Pipeline
Migrations affect backend database state and indirectly impact frontend load by controlling schema readiness. Running or rolling back migrations triggers database schema changes that can lock tables and delay queries.
Database Locking
Query Execution
App Startup
⚠️ BottleneckDatabase Locking during migration execution
Optimization Tips
1Run only pending migrations to reduce deployment blocking.
2Keep migrations small and fast to minimize database locks.
3Rollback migrations incrementally to avoid long lock durations.
Performance Quiz - 3 Questions
Test your performance knowledge
What is the performance impact of running all migrations every deployment?
AIt causes unnecessary delays and database locks.
BIt speeds up deployment by preloading all migrations.
CIt has no impact on deployment speed.
DIt reduces database locking by batching migrations.
DevTools: Rails Console and Logs
How to check: Monitor migration execution time and database locks via logs and Rails console commands like 'SHOW PROCESSLIST' in MySQL or 'pg_stat_activity' in PostgreSQL.
What to look for: Long-running migration queries or locks that block other database operations indicate performance issues.