Wednesday, September 21, 2011 at 9:03AM
Sean Hull with two helpful posts:
- Object Relational Mappers. Create complex queries that hard to optimize and tweak.
- Synchronous, Serial, Coupled or Locking Processes. Locks are like stop signs, traffic circles keep the traffic flowing. Row level locking is better than table level locking. Use async replication. Use eventual consistency for clusters.
- One Copy of Your Database. A single database server is a choke point. Create parallel databases and let a driver select between them.
- Having No Metrics. Visualize what's happening to your system using one of the many monitoring packages.
- Lack of Feature Flags. Be able to turn off features via a flag so when a spike hits features can be turned off to reduce load.
- Use Auto-scaling. Spin-up new instances when a threshold is passed and back down again when traffic drops.
- Horizontally Scale the Database Tier. MySQL in a master-master active passive cluster configuration. As load grows roll in read-only slaves. As an alternative use Amazon's RDS. Scale up to a larger EC2 instance is the load on a single master is a problem.
- Use Striped EBS Volumes. For better EBS performance use Linux's software raid technology. EBS already has redundancy built in so you can stripe across a number of EBS volumes. 4 are recommended.
This is just a brief summary. Please read the original articles for the full details.