mysql获取删除的条数_如何从mysql表中删除数百万条记录而不会减速

有没有一种很好的方法来删除很多记录而不会减慢网站的速度?

我需要从没有索引和主键的MySQL表中删除数百万条记录。我阅读了SO和网上的各种教程,基本策略是限制删除查询,在删除之间休眠一两秒钟,然后重复此过程直至完成。我也(使用PDO)在完成所有循环后运行提交。

上周工作正常,但每次我运行脚本时,数据库都放慢了速度,我们收到很多关于网站速度缓慢的抱怨等。这是在Miva Merchant篮子表上,并不是真的很重要。

我几乎完成了桌子的修整工作,所以我可以通过它完成。但是一定有更好的办法......?

这里是相关的代码:

$database->beginTransaction();

$selectLimit = 4900; // mysql will lock the entire table at 5000+.....

$loopLimit = 10;

$date = "1456272001"; // 2016-02-24

for( $i = 0; $i < $loopLimit; $i++ ) {

$startTime = time();

$oldBaskets = $database->prepare("DELETE FROM s01_Baskets WHERE CAST(lastupdate AS UNSIGNED) < '" . $date . "' LIMIT " . $selectLimit . "");

if ( $oldBaskets->execute() ) {

$deletes = $oldBaskets->rowCount();

$totalDeletes += $deletes;

$duration = time() - $startTime;

echo "\ndeleted '" . $deletes . "' entries";

echo "\n-- took '" . $duration . "' seconds";

}

sleep(2);

}

$database->commit();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值