例如购物网站中,同时有几千几万个用户一起请求购买,这时候如何能够优化数据插入呢?
如果一条条插入的话,要连接几千次数据库,性能上可能损失比较大。
我初步的想法是能不能缓存一下请求,比方说队列满100个请求,然后生成一个xml,传入数据库过程中,解析插入数据。
不过感觉这样效果也不见得好,有没有更好的处理方法,求教。

解决方案 »

  1.   

    可以用MemCache,按你说的,把请求插入的数据放到MemCache里,满100个就插入到数据库里
      

  2.   

    如果正好在订购人少的时候下订单,那岂不是一直下不了,还要等待100人满?
    不过可以建立一个XML文件暂缓存储下的订单,XML满100后就插入数据库。
    但是这样的话,如果客户刚下订单再去数据库查询等待其他需要使用该数据的时候就不知道要从数据库还是XML文件中获取列表了。
      

  3.   

    你想得有点太偏激了。我上次与一家B2C公司的CTO谈话时,说到订单这块,其实压力并不是很大。不可能瞬间有成千上万的负载并发
      

  4.   

    不一定几千几十万啊?可能就是有个几百并发,但是如果插入100次的话,可能就需要几秒哦,综合一下,创建cache,插入条件为
    1. 定时更新
    2. 满100更新
    继续等。
      

  5.   

    楼主你的想法是没对的。
    第一:如果使用服务器端缓存,如果服务器重启怎么办?
    第二:如果使用客户端缓存,如果用户只买一件商品你怎么处理。
    基于WEB的程序本身就是多用户可同时操作的,你所要做的优化就是让每一次数据写入或更新更快就可以了。如果老板要求什么同时写入几千几万条数据,那不是一台服务器所能办到的,一个办法加服务器或加工资。
      

  6.   

    如果服务器死机,重启等原因,CACHE不就没了?文件还好一点吧。
      

  7.   

    购物网站算是OLTP , 单独的缓存的话数据库的ACID就没办法保证了. 肯定不能使用的. 只能从DB上想办法.
    DB做并发优化 ,小表的话钉死在内存中.上并行服务器.