当前位置:   article > 正文

mysql获取删除的条数_如何从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();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/397674
推荐阅读
相关标签
  

闽ICP备14008679号