【发布时间】:2013-10-30 20:03:41
【问题描述】:
我有一个 php-cli 脚本,它可以在亚马逊上进行 +200 万个 mysql 查询(使用索引的 1/2 选择语句、一对 varchar(25)、int(5) 列的 1/2 行插入)服务器的 crontab。脚本本身需要几个小时才能运行。我想把它缩短到 5 分钟左右。
我想知道如何扩大行插入以缩短时间?(该脚本本质上是一些 api 数据的 foreach 循环,因此我也在研究每次迭代分叉脚本的方法((如一个单独的问题))
我一直在研究 mysql 集群,但对数据仓库等一无所知。有人知道这是否是开始寻找的正确地方吗?像 Hive/Hadoop 这样的东西会更合适吗?
--编辑 我正在使用 ec2 微实例作为上下文。我预计将需要迁移到更重负载的实例,但我想知道是否有任何类似 mysql 的替代品来替代普通的旧 mysql 守护进程可能会有所帮助
【问题讨论】:
-
增加 CPU、RAM 并获得 SSD? :)
-
缩放插入并不容易,而且您没有提供足够的信息。插入在很大程度上取决于您的硬盘驱动器可以提供的 IOPS(每秒输入输出操作数)。如果您可以在一个事务中包装数十个插入(并且如果您使用 InnoDB 或 TokuDB 之类的事务引擎),您可能会在硬盘驱动器的单个 IO 中推送数十个(或数百个)插入。如果没有看到您的代码 - 很难进一步建议您。不过,拥有 SSD 肯定会有所帮助。
标签: php mysql amazon-web-services mysql-cluster