现在网页实时刷新技术一般都用ajax做,这样可以实时的更新取到数据库的最新值。但是同时也带来了数据库负载问题,如果很多人开这个ajax的页面,ajax又1秒去查询下数据库的最新记录,那这样不是巨大的拖累了数据库。特别是大数据量的时候,每秒,实时去用ajax获取数据库查询,数据库能又每次jdbc的连接查询下,这样如果一个系统多几个地方用ajax去做,多一些人开ajax的页面,那数据库不是废了?所以请教各位高手这种问题怎么解决??
用连接池好像只是保持数据库与java程序的连接,java要增删改查需要通过连接池的连接再开关一次使用的消耗吧??有没有一种java保持操作数据库的连接?或者有什么更好的方法?指教。。

解决方案 »

  1.   

    如果一个连接被一个客户端长期占用 那么连接池的连接数需要N大  这种方法是不可取的,只有充分利用到hibernate 或其他实现的二级缓存, 减少数据库的压力。
      关于提高数据库的压力 有集中方法,如oracle 中的表分区, 多个数据库同时服务一个应用(即web 程序)
    ,多个数据库存放在不同的数据库服务器!      数据库的瓶颈在连接数目!  如果数据要求实时性  要求很严!  数据库的连接数据一定要多!   如果数据实时性没有很严,可以延迟多少秒   可以放到一个集合中,多少秒后执行一次!    只是本人的设想!
      

  2.   

    不过我有个想法,用一个线程实时去扫描库,然后把内容放到一个静态容器中,然后ajax实时的访问这个静态容器,这样就不用频繁访问数据库,当然那个容器是只读的。
      

  3.   


    CACHE框架,这种的好像还有很多,不过没具体操作过不太懂。
      

  4.   


    实时扫描:就是说每秒都去扫描,这个是频繁,但是我只有一个人去实时扫,不然的话,多个ajax,那就是多人在同一秒多个去扫描。这样不就缓解了?调度??指教
      

  5.   

    这个可以在数据库查询完,直接清空,然后把全部新查询出来的放进去!不知道这样的做法 会有什么问题?你所说的查询数据  我想是条件极少把! 如果数据量大的话,那么将会产生不必要的Io 操作,数据库的底层都是通过Io 操作,Io 操作的数据量都很大,那么将会严重消耗系统的资源,释放资源(之前查询出来的数据),也将消耗系统资源!   应尽可能的减少资源的初始化和释放!  鄙人愚见。
      

  6.   

    每秒都查,每秒都清空容器,每秒都往容器中存,咱别每秒,改为10秒行么?调度就是能没十秒运行一次操作,我所知道的Quartz能。
      

  7.   

    不看评论啦!   太多了!很简单的思维方式,既然很多浏览器请求服务端,服务端再请求DB,那你保证 server 请求DB一秒一次,更新server中的缓存数据,ajax的数据从server 缓存中取,而不是从间接从DB中去取就好了,这样的做法实现太多了。缓存实现可以你自己直接封装,可以使用现有的cache框架 osCache  ehcache  memecache 等等把DB的压力的重复劳动缓存,并转嫁到server上。
    so essay!唯一比较麻烦的就是缓存的更新策略,在请求频繁的时候,保证一秒一次请求,在没有请求的时候变成1小时一次。
      

  8.   

    我想请问hibernate数据库是自带连接池吧。我们用了hibernate还需要其它的连接池吗
      

  9.   

    只有缓存,各种缓存,分布式的,分级的,才是真正的解决问题之道。别人PHP一般不用数据库连接池呢