php程序随机记录mysql rand()造成CPU 100%的解决方法

发布时间:2020-12-18编辑:脚本学堂
案例背景:mysql数据库有10几万条数据,使用rand()提取随机10条记录,导致服务器cpu占用居高不下直至死机。

案例背景:mysql/ target=_blank class=infotextkey>mysql数据库有10几万条数据,使用rand()提取随机10条记录,导致服务器cpu占用居高不下直至死机。
网上提供的解决方法:
 

复制代码 代码如下:
<?php
$idlist='';
for($i=1;$i<=20;$i++){
if($i==1){
$idlist=mt_rand(3,25216);
}
else{
$idlist=$idlist.','.mt_rand(3,25216);
}
}
$query="select * from table where id in ($idlist) LIMIT 0,10";
?>

原理分析:产生一组随机ID,然后检索这一组ID对应的记录。
经过这样优化,页面打开速度明显快了很多,CPU占用率也小到几乎为0。
顺便用这个思路把sql server数据库应用中的站点也优化了一番。

速度比较
用rand()取10条随机记录要400多毫秒,而用上面的方法则只要0.6毫秒左右,效率提高了不是一点点啊。
 

您可能感兴趣的文章:
php获取CPU使用情况的代码
php中使用proc/loadavg监控CPU的平均负载
php记录服务器负载、内存、cpu状态的代码
php页面缓存的例子(减经cpu与mysql负担)
php获取cpu与内存使用情况的代码一例
php获取linux服务器CPU、内存、硬盘使用率的实现代码
php获取计算机唯一标识信息(cpu,网卡,MAC地址)的代码
PHP-CGI 进程 CPU 100% 与 file_get_contents 函数的关系
php获取CPU使用信息