我有一个Java程序和PHP网站,计划在具有EBS卷的Amazon EC2实例上运行。该程序将写入数据库并从中读取数据。该网站仅从同一数据库读取。
在AWS上,您需要为卷支付IOPS(每秒的I/O请求)量。哪个数据库的IOPS最少?另外,SQLite是否可以同时处理来自程序和网站的查询?
最佳答案
IO的数量将在很大程度上取决于您如何配置MySQL以及应用程序如何使用数据库。缓存,日志文件大小,数据库引擎,事务等都将影响您执行的IO数量。换句话说,虽然我猜测SQLite会拥有更多的磁盘IO,但是可能仅仅因为数据库文件必须一直打开和关闭,而MySQL读写(尤其是)才能被缓存,所以可能无法预先预测。由MySQL本身在内存中存储。
这个站点Estimating I/O requests拥有一种精巧的方法来计算您的实际IO,并以此估算EBS成本。您可以在模拟负载下的测试系统上运行应用程序,并使用此技术来衡量MySQL解决方案和SQLite解决方案之间的IO差异。
实际上,这可能并不重要。每百万个IO请求费用为0.10美元。在具有大量数据库访问权限的中型流量电子商务网站上,我们每个月大约进行3.15亿个IO请求,即31美元。与EC2,存储和带宽成本成千上万相比,这是微不足道的。您可以使用AWS cost calculator插入估算值并计算所有AWS成本。
您还应该记住,SQLite的人只有recommend that you use it for low to medium traffic websites。对于高流量站点,MySQL是更好的解决方案。