这是个简单却难以回答得圆满的问题:
做一个大型的网站,就是LAMP系统,在程序后台有很大的计算量,这些计算量都要访问MySQL数据库。请问,在做设计时,这些大计算量的程序,是放在PHP里用一些PHP自定义函数来实现更好,还是做成MySQL的存储过程和触发器,用MySQL的存储过程和触发器来实现更好?类似的,比如我用SQL Server 2000 + C#来开发一个大型网站,或者功能型网站,最好把需要大量计算的部分放在SQL Server 2000的存储过程和触发器里实现,而前台使用C#来调用这些存储过程和触发器。但是PHP + MySQL的情况可能不一样,这一点因为我没有做过PHP + MySQL的大型网站,所以不清楚是否该采用这样的方法来设计。我是基于这么考虑的:
第一,使用存储过程和触发器,减少外部程序对数据库的访问,就少了PHP对MySQL数据库N次访问的时间消耗。第二,使用预编译的SQL语句,也许对MySQL来说执行效率会更快一些。我的犹豫是:
第一,某些地方的说明是,PHP的处理速度非常快,要高于数据库的处理速度,如果我使用PHP本身来做大量的计算,可能相反速度高于使用数据库的计算速度第二,某些地方的说明是,MySQL的存储过程能力还不是很成熟,这一点是否会影响到MySQL对预编译的SQL语句的执行效率。
需要说明的是,我眼下用的开发调试平台是:
WindowsXP + IIS5 + PHP5.2 + MySQL5.0

解决方案 »

  1.   

    "在程序后台有很大的计算量"---如果只是后台的工作,可以考虑做APACHE的模块控制数据库。加数据库函数主要用来处理网页实时统计显示数据没办法的选择,比用PHP快。需要说明的是,我眼下用的开发调试平台是:
    WindowsXP + IIS5 + PHP5.2 + MySQL5.0
    -----晕,你做LAMP你还不配置一个环境啊。
      

  2.   

    你做LAMP你还不配置一个环境啊
    ---这不是大问题.php也有很好的跨平台性
      

  3.   

    php可以夸平台,后台的C呢?apache的模块呢?
      

  4.   

    大型应用就得LINUX
    WIN很大部分是为了迎合以前的ASP用户而产生的.
      

  5.   

    WAMP与LAMP的效率差的不是一星半点,更别说WIMP了
      

  6.   

    win下的apache,效率还是挺好的。IIS……等zend开发出来提高IIS运行PHP的效率的加速器来吧不过听说已经在开发了
      

  7.   

    大型网站还是别考虑mysql了
    postgresql
    或者oracle
      

  8.   

    这个问题最重要的不在这里。
    如果你的网站访问量很多,那么产生的数据库连接会很多,因此
    1 需要减少单个连接访问数据库的时间好加快释放;
    2 减少数据库查询所以说,如果在访问数据库的同时还有大量复杂耗时的计算的话,呢可能需要改变策略,否则单个连接将占用大量时间,连接很长时间才被释放,导致数据库资源消耗严重。
    这个无论什么数据库都会有问题,如果你的应用在sql server 2000没有问题,那么在mysql上也没问题。(前提是数据量别太庞大,否则无论你如何做mysql都不行)
      

  9.   

    没做过大型网站,但之前有研究过类似问题,比较认同楼上的意见一台服务器,依据带宽和硬件,基本上并发连接数是定了
    (所以某程度上说提供访问量用人民币技术也不为过)如果并发数比较低(服务器少必然不可能很高),而且web和db混合的话,
    瓶颈会在数据库连接上,这是我征询过不下20个网管的普遍结论
    所以应把计算转嫁到php上,如果执行时间较长的计算甚至应该转嫁到“富客户端”
    再用ajax把计算结果重新传到php再进行下一步操作除非你有需要对算法进行保密,否则应该多考虑利用客户端的能力
      

  10.   

    一般来说,大型网站都是多台服务器做load balance的
    并且数据库的服务器和程序服务器是分开的,甚至连数据库服务器都有负载平衡
    我个人觉得网站的规模大到一定限度的时候,在软件上的提高也就这么点了,反而硬件上的提高才是最重要的
      

  11.   

    我不建议换数据库, 这是一个如何减少数据查询次数和减轻服务器负荷的问题!
    建议有些不需要经常更改的数据可以做成缓存文件, 可以减少访问MySQL 的次数!
    还有如果Money够多的话, 数据库服务器可以用独立的主机!
      

  12.   

    有多大,google不是还是在使用mysql
    跟人有关
      

  13.   

    ......
    连接查询次数多的可以生成缓存吧或者学google自己做个WEB服务-_-!
      

  14.   

    PHP开发人员 
    招聘人数2-3名
    职位描述: 基于 PHP + MySQL 开发网站程序
    任职资格 :
    1、精通使用 Apache + PHP + MySQL进行WEB的开发;
    2、掌握UML,至少熟练掌握一种UML建模工具;
    3、具有文档编写能力,面向对象的编程思想,优良的编程风格和习惯;
    4、计算机相关学历;有两年以上的php脚本开发经验; 
    5、对软件开发工作有富有热情,工作责任心强,富于团队精神和敬业精神;待遇根据能力定薪金,具体待遇面议,保证不低于同行业水平,有意者请发电子邮件到Email:[email protected]
    工作地点:
    北京望京科技园利泽中园或北京电子城科技园区 [靠近望京和酒仙桥地区]
      

  15.   

    第一,使用存储过程和触发器,减少外部程序对数据库的访问,就少了PHP对MySQL数据库N次访问的时间消耗。==>嗯:这个是减小交互量,数据库的压力并未真实的减少,相反大量用存储过程,触发器,对数据库的压力反而加大。第二,使用预编译的SQL语句,也许对MySQL来说执行效率会更快一些。
    ==>嗯:希望在每句sql 执行前先explain 一道。对大量数据不怎么更新的数据,可以转成全文检索类型,(要加个中文补丁) 长期对表进行维护。没有企业级需求时数据库不要用innodb 存储引擎。我的犹豫是:
    第一,某些地方的说明是,PHP的处理速度非常快,要高于数据库的处理速度,如果我使用PHP本身来做大量的计算,可能相反速度高于使用数据库的计算速度.
    第二,某些地方的说明是,MySQL的存储过程能力还不是很成熟,这一点是否会影响到MySQL对预编译的SQL语句的执行效率。
     
    总之优化大型网站我所知道的必要的几个东西.
    1 crond 用计划任务来处理一些东西。使数据库压力分散。
    2 网站静态化。减少访问数据库次数。
    3 查询优化。
    4 数据库集群,(服务器不够?先做个M/s结构,让s来分担search 任务。)
      

  16.   

    关键地方,多用cache,对数据库减压很有帮助的
      

  17.   

    ing,很关注php与mysql之间的问题,非常有嚼头
      

  18.   

    http://www.libing.net.cn/read.php/1163.htm
      

  19.   

    在程序上大家能够挤出多少效率呢?除非是新手一般有点道行的在软件方面都注意到了
    如果是大型网站那硬件也必须跟上,所以我的解决方法就是在硬件上,尽可能的把最常用的应用单独放到一台服务器上,网站和数据库要用集群,有条件的话直接上阵列,程序上静态化,这样的做法一般的大型网站还是可以胜任的,但如果并发数达到5w或更大的话就只能再加服务器或用其它办法了,具体可以参考google的做法。