Does anyone have any experience when it comes to speed of Amazon RDS vs MySQL on a Small server?

Firstly, I don't use RDS - so don't take this as an absolute. As with EC2, RDS is classed by instance type, so in terms of computing you get the same thing. The difference comes down to 'configuration' and the degree to which the hardware is dedicated.

RDS advantages:

  • Hardware is dedicated to only running RDS - not shared with 'general purpose' instances
  • Possibly better network I/O
  • Provides a good, general purpose, 'out of the box' configuration
  • Updates are managed for you
  • Potentially easier to setup basic replication
  • Good interface for configuring
  • Backup storage is included in cost

RDS disadvantages:

  • Higher cost than equivalent EC2 instance (~40% more)
  • Limited customization
  • Performance can be highly variable (especially disk I/O)
  • Required maintenance may result in downtime if using a single RDS instance (avoidable with multi-AZ deployments)
  • It's more out of your control

EC2 advantages:

  • Can setup RAID arrays to increase disk I/O
  • More flexibility in terms of customization (access to my.ini) and maintenance
  • Lower cost
  • Should be able to achieve equal or better performance if well tuned
  • Allows for more conventional replication and failover
  • Can setup custom monitoring/analysis - and deal with problems directly

EC2 disadvantages:

  • Requires more skill/effort to setup
  • 'Out of the box' performance is not as good as RDS
  • Less stable network I/O

I'd suggest the following:

  • If you don't want the bother and/or can't tune MySQL satisfactorily - go with RDS
  • If the network I/O is going to make a big difference (typically setups with many threads simultaneously in use) - RDS will offer more stable performance
  • If you need fine grained control (or don't need better performance) or are cost conscious - go with EC2
  • If you want to learn about MySQL as you grow - go with EC2

For any specific use case, the best option is probably to benchmark each and see how they stack up - performance will vary for each setup afterall.

Further reading:

  • https://stackoverflow.com/questions/4806272/amazon-rds-vs-ec2-with-mysql
  • http://blog.observu.com/2011/05/rds-vs-mysql-on-ec2-benchmark/
  • http://www.mysqlperformanceblog.com/2011/03/15/mysql-on-amazon-rds-part-1-insert-performance/