本帖最后由 free212 于 2009-07-23 22:54:45 编辑

解决方案 »

  1.   

    把第一步缓存下来是肯定必要的,但是重头戏是怎么处理统计数据!这个似乎没有什么办法,但是看你些的语句似乎没有优化过?可以从SQL语句上下点功夫~比如 UNBUFFERED !数据库设计上也有影响的,如果把语句也优化过,数据库表的设计也合理的话,应该可以有明显效果的!
      

  2.   

    UNBUFFERED是不缓存查询结果吧,在哪里能起到帮助?
    不晓得以上的SQL中不知还有哪些能优化的,能想到的我都试了。
      

  3.   

    比如统计的时候,记录这些内容到YYYYMMDD_ad_id的txt文件里,
    每天凌晨再将这些txt的内容汇总入库。
    减轻数据库白天的压力。
      

  4.   

    广告只需要一次插入记录就够了获取广告这步可以先用后台生成缓存文件再include 进来, 这样只有更新广告清单时才会变动显示广告这段除非写得很差~如果不是的话应该只需很少资源更新该广告的浏览量这个不应该实时更新, 从记录中统计就可以了加入统计表只需一行, 数据库加一个唯一性的字段 (由 日期+IP+广告ID 组成)
    已存在记录就不能插入成功...不需要另外判断而且SQL可以用延迟执行, 一页一句 SQL 就跑完了
      

  5.   

    写文件,把统计信息都写到文件里边去,如ip 点击广告id 浏览时间,点击时间等等这些写道一个文件,然后到了夜深人静的时候来批处理一把
      

  6.   


    谢谢第一步,是打算生成缓存了,
    第二步,显示那不会很复杂,仅判断下时间而已
    第三步,你说的“从记录中统计”不大明白意思
    第四步,加上判断的目的是为了节省点表的行数SQL延迟执行也不甚明白,可否讲下大概过程?
      

  7.   

    php方面用单例模式,始终只给一个instance;
    数据库用存储过程是肯定的
    数据库表单设计很重要,
    字段最好多用int float double等数字类型,
    考虑使用一种高效的缓存。
      

  8.   

    第一步:使用memcache进行缓存,定期处理数据写入的问题
    第二步:优化更新频率,例如可暂时进行计数器,可通过文件或内存,文件的具体操作,可写一个文件每次写一个beye的内容到文件,例如一个空格,然后定时统计文件的大小就获得了点击数,再统一更新数据库。另外,如果你的访问量达到亿次的话,应该考虑进行结构的分布式处理了,例如php程序部署到多台服务器,通过LVS或着域名轮询的方式访问php程序,然后在数据库方面也进行分布部署,从你的例子中可以看出你用的是mysql,你可以建立m-s结构,读取数据通过s端,写数据都放在m端,
      

  9.   


    谢谢,很强的建议,memcache也是个不错的选择,准备研究测试一下效率,至于访问量还没那么夸张了,能上亿的话我就发了,呵呵
      

  10.   

    七楼所说的SQL延迟执行不知可有人操作过?
      

  11.   

    内存级缓存memcache,这个效果应该不错
      

  12.   

    memcache是不错,就是操作太麻烦了.