MySQL是否可以在单个事务中执行最大量的查询?

时间:2014-03-23 10:21:26

标签: mysql transactions

我有一个程序,每天都在网上分析一组非常大的文本数据。目前我正在迭代这些数据&存储它。但是,我最近了解到,beginTransactioncommitprepared statements一起使用会更快,更强大。事先的代码结构是相同的,没有beginTransaction()commit()语句。 我想知道是否有可能在使用交易时我通过引入新的故障点无意中危及我的服务器/程序的完整性:内存硬限制。这是一些描述正在发生的事情的伪代码:

$database->beginTransaction();
$query = $database->prepare("insert into data_storage (id, data, time) values (?, ?, ?);
for ($i = 0; $i < count($dataset); $i++)
{
    $etc = get_data_from_curl($dataset[i]["url"]);
    $query->bindParam(1, $etc[0]);
    $query->bindParam(2, $etc[1]);
    $query->bindParam(3, $etc[2]);
    $query->execute();
}
$database->commit();

这导致我的测试执行脚本的速度提高了15%,其中$dataset的大小约为2000.但是,我不确定beginTransaction()是否会在我的测试中添加任何额外的内存限制服务器。我使用的是免费的亚马逊服务器,服务器的完整性对我的项目非常重要。

有时需要一天时间才能记录所有新数据。 由于内存限制,这么多新数据是否可能导致我的程序/数据库崩溃?

有更好,更快的方法吗?我听说过存储过程以及它们如何改进数据库功能,但我不确定如何在这种情况下应用它们来加快这一过程。

1 个答案:

答案 0 :(得分:0)

如果你真的想让你的数据库写得更快,不要让它们依赖于像网络查找这样糟糕的慢速操作。