用缓存文件快速缓解数据库压力方案

在跟TX一个项目由于广告效果做的不错,用户暴增,几天时间某一张表达到5KW多条数据,后期还会暴增,不得把这张表重新优化,提高体验效果。由于数据大,迁移起来比较繁锁,同时考虑了项目周期性比较短等原因,临时采用把表生成缓存文件来读取,把这张表数据分成100张文据来代替读取数据库文件,然后后台定时抓取这张表数据生成缓存:

优点:读取速度快,实现简单,适用于广告型项目

缺点:  数据实时性不强,不适合周期长的项目
下面是实现代码部分:
 

PHP Code复制内容到剪贴板
  1. define('ROOT_PATH'realpath(dirname(__FILE__) . '/../') . '/');  
  2. define('CACHE_PATH', ROOT_PATH.'cache/');  
  3. $db = new TMService();  
  4. //步长为1,循环  
  5. foreach (range(0, 99, 1) as $number)   
  6. {     
  7.     $fileName = "fileMessage".$number.".xml";  
  8.     $allFile  = $db->query("select `FQQ`,`FUser`,`FState`,`FDealTime`,`FScore`,`FTime`,`FVoteCount`,`FDesc`,`FAudioUrl`,`FMemo`,`FType`,`FFileId` from Tbl_File where MOD(FFileId,100) = $number");  
  9.     $newArr = array();  
  10.     foreach($allFile as $key=>$item){  
  11.         $arr = array("0"=>$item);  
  12.         $newArr[$item['FFileId']] = $arr;  
  13.     }  
  14.     $data = serialize($newArr);  
  15.     $fo = @fopen(CACHE_PATH."filecache/".$fileName,'w');  
  16.     @fwrite($fo,$data);  
  17.     @fclose($fo);  
  18. }  

童鞋们有好的方案可以一起讨论一下。。


文章如转载,请注明:转载自:第九街-PHP[http://www.9streets.cn/]
本文链接地址:
发布者:9streets于 2011-12-21 发表 | 我要评论(0) | 阅读次数(224)

转播到腾讯微博


首页第九街博客由来关于博主联系博主免责条款隐私保护九街项目流程 | 网站地图 | 申请友情链接