系统业务处理完成之后,会将处理的结果存放在数据库日志表中。如果在高并发的环境中,日志数据插入操作是系统效率的一个瓶颈,大家有什么好的办法解决?

解决方案 »

  1.   

    1、将日志写到文本log中 与将日志写到内存(内容数据库)中,应该是类似的吧。
     将数据写入到block(文本、内存)中,当block容量到达一定值的时候。再申请一个新的block,继续记录数据。同时启用一个daemon服务来处理“容量满”的block到数据库?
     区别:将日志记录的log中,会有io消费(当然会比直接访问数据好多了);将日志记录在内存中,在系统突然down掉的时候后,会出现数据丢失的情况。
     权衡之下,记录 在log中,更好?!
     2、主要是在数据插入业务比较高。并发访问的情况极少。这种日志(资金流水),主要是做汇总的。
     3、如上,怕内存数据库出现数据丢失的情况……
     
     另:在je上看到有人说嵌入式数据库对于C/S模式下的效率很高,如果在高并且的应用中,会是一个瓶颈,因为这种数据只是一个实例来处理所有的请求……我没有实际的应用经验(我主要用于Demo)
      

  2.   

    1.首先完全绝对精准的准确是做不到的,所以呢,丢数据并不是一件很可怕的事情,再有就是你每五分钟把数据放入数据库一次,不就可以了吗?而且丢了数据还有日志可以查漏补缺,不用那么害怕吧
    2.插入数据库多,那么你对响应速度有没有要求,没什么要求,那就用数据库表,没问题。
    3.嵌入数据库和内存数据库不是一回事,berkerlyDB经测试证明,抗至少三千万的量没什么问题。而且用嵌入数据库,那么转换成关系数据库的数据也好转,呵呵,不用分析日志
      

  3.   

    已经确定使用BerkeleyDB - je版来测试,看看效率如何,多谢各位捧场,