项目中遇到个页面,大概要写20多个sql语句,执行完毕非常慢,要10秒,小弟就想用多线程,不知道可不可以快点,
但是之前没接触过实际的例子,求哪位大神帮忙分析分析,写出大概思路,最好能给个例子,或者搭一个大框,
数据库是oracle,框架用的spring mvc +ibatis
没分了,就40分。。。多谢亲们了。。。
------解决思路----------------------
1.首先一个页面需要使用这么多的SQL查询才能找到结果是不合理,看看有没有什么方法可以减少执行的SQL;
2.页面使用异步刷新,将页面的数据分成几个模块,每个模块的数据使用不同的servlet来查询返回(这个其实相当于是多线程了,因为servlet是多线程处理的);
------解决思路----------------------
为什么要用多线程,每个请求本来就是多线程机制;你如果想用多线程多发几个请求不就可以了!
还有你的SQL语句是否可以进行优化!
------解决思路----------------------
SQL语句进行优化.多线程查询数据库,也有问题吧,有时会产生死锁现象.
时间长你可以把先读完的数据先显示,这样比较好吧.不用空等全部读完显示.
------解决思路----------------------
对于一个页面显示 需要 10个SQL 连接DB 拿到所需要的数据,这个与很多 门户 网站 首页类似.
1,搞清楚 你的统计页面是否必须每次都要与DB交互,可以用cache 将数据线缓存起来,这样与缓存交互,减少与DB的连接时间,但必须要设计好缓存机制(关于数据更新同步问题)
2,这个与多线程没关系,建议用异步,在页面渲染的时候分别查询不同 的控制器获取数据,你的每个sQL应该是独立的,没有时序性,Servlet在3.0之前都是单实例的,与多线程没关系,只是Servlet支持多线程请求可以。
3,或者在第一步的基础上做 静态化,这只是第一种机制的不同实现而已.
------解决思路----------------------
哥们 你不会把20几个sql 放在一个存储过程当中,这样执行一次就好了,不用频繁的IO,速度快很多。