2

我一直在开发一个网站,该网站将每小时将约 1200 万行代码(约 1GB/数据)导入 mySQL 数据库。在查看了不同的 VPS 和亚马逊 ec2 之后,我正在考虑采用最具成本效益的解决方案。

至于网站的访问者,每月的页面浏览量应该只有 300-600k 左右(最大 15GB 的带宽),在一天中均匀分布。

当我导入数据时,我使用“IN FILE”,它一次导入 ~200-350k 行,只需要 ~1-3 秒。导入通过 Cron Job 运行,每分钟运行 1 次(每天约 1400 次)。

拥有 VPS 或使用 Amazon EC2 会更好吗?如果我使用 Amazon EC2,CPU 峰值对于微型甚至小型(我是否需要高 CPU 中型实例)来说是否会太多?

如果有人可以分享一些关于 mySQL 在这 1-3 秒内实际拉入多少 CPU 或 CPU 时间允许多少微实例的见解。

如果我选择 VPS 路线,我将从http://x10vps.com/self-managed-vps.php获取 S1 包,并在需要时升级到 S3。

4

1 回答 1

3

如果不了解您正在加载的数据的详细信息,很难对此多说。MySQL是否必须更新表中的索引?一切都已经正确分类了吗?有多少列,您是否在LOAD DATA INFILE语句中执行任何 CPU 密集型操作(例如替换部分字符串)?是在一段时间后删除旧数据,还是应该在应用程序的整个生命周期内保留所有数据?

话虽如此,听起来单个 Micro 实例可能很难处理这个问题。如果您使用大量 EBS 存储备份实例(可能在 RAID 配置中),则导入数据应该没问题,但如果该单个实例还负责在如此大的数据集上运行用户查询,那可能不会运行非常顺利。当导入脚本运行时,充其量您最终会延迟几秒钟的用户请求。根据您的应用程序,这可能会或可能不会被接受。

如果您要对数据运行昂贵的查询,我现在可以说,这在单个 Micro 实例上效果不佳:) 您可以扩展到更大的实例或根据您的需要,您也可以想考虑使用 SimpleDB 或类似的 NoSQL 解决方案(尽管这会在您的导入脚本中占用更多代码,因为您必须对每批最多 25 个项目进行批量放置)。

但这些只是一些一般性的想法。AWS 实际上为新用户提供了免费使用套餐,让您可以连续运行一个 EC2 Micro 实例一整年而无需支付一分钱,那么为什么不注册一个帐户并运行自己的测试呢?更多细节在这里这里有一些关于微实例如何工作以及它们适合哪些应用程序的更一般的信息。

于 2012-05-22T20:58:53.767 回答