我们的项目跑起来很慢,怎么解决呢? 比如:每秒可能有300次访问,每次访问都向数据库插入数据。
然后用户还要查看结果,这个结果也是查询数据库。如果不采用缓存机制的话,效率可能会很低。
我想先将这些访问请求放入队列中,然后统一由一个后台线程执行,比如2秒执行一次。解决办法:
频繁的insert可以用先insert到内存的队列中
队列要么threadsafe,要么用代码保护.
保存的thread从队列另一边取得一堆object,用一个事物保存到db中.保存的的thread可以一直打开数据库连接不关闭.事物隔离度一般为read committed即可.
读操作的事物隔离度设置为read committed不会与写操作产生冲突(既一个操作阻塞另一个操作)
:输入->byte->object->queue->取出object->用hibernate保存到DB
一般硬盘的i/o速度还是比网络接口的i/o速度快一点的.
如果硬盘的i/o速度不够快,内存队列将越来越大(输入速度大于输出速度),把内存耗光.