0

我有一个 php-cli 脚本,可以在亚马逊服务器的 crontab 上进行 +200 万个 mysql 查询(使用索引的 1/2 选择语句,一对 varchar(25)、int(5) 列的 1/2 行插入)。脚本本身需要几个小时才能运行。我想把它缩短到 5 分钟左右。

我想知道如何扩大行插入以缩短时间?(该脚本本质上是一些 api 数据的 foreach 循环,因此我也在研究每次迭代分叉脚本的方法((作为一个单独的问题))

我一直在研究 mysql 集群,但对数据仓库等一无所知。有谁知道这是否是开始寻找的正确地方?像 Hive/Hadoop 这样的东西会更合适吗?

--edit 我在一个 ec2 微实例上作为上下文。我预计将需要迁移到更重的实例,但我想知道是否有任何类似 mysql 的替代品来替代普通的旧 mysql 守护进程可能会有所帮助

4

1 回答 1

0

只需从微型实例升级,您就会看到性能的巨大飞跃。微型实例使用可突增的 CPU 配置文件,对于大部分导入,您将以非常低的性能运行。

您可以做很多事情来优化插入。在单个事务(InnoDB 表)中尽可能多地提交或禁用索引更新(MyISAM 表)可以“分组”以更有效的方式一起工作。

在更新大量数据的某个时候,您将达到 I/O 的限制。使用 EC2,您可能想要测试 RAID 配置或预置 I/O,以了解如何最好地提高性能。

于 2013-10-30T20:29:09.230 回答