背景:某页面中,有近30个数据点位,每个点位来源于不同的数据库,数据表。整个页面每隔固定时间刷新一次。有这样种页面N个。使用JFinal+druid连接池。
现处理方法:按页面上的数据点位名,按JSON中排列顺序,去不同数据库、数据表中取出相关数据。
存在问题:
1、数据量多时,阻塞现象严重。即某页面中,某数据未读出,影响后续数据的读取。
有没有办法可以做到几秒读不到数据,自动跳过该数据。
2、多个页面同时打开时,实际数据量更大,页面不断报错:
ERR_CONNECTION_TIMED_OUT
有没有并发处理的方法,即同时处理多条SQL语句(10或20以上)。
3、当某个数据库不能连接时,druid会不断的去连接,直到资源耗光。希望能设置读取几次后,不再尝试去读。
该怎么解决,求各位指点?野路子,没有上过学。。。。,对各种概念也不是很了解,最好能给点例子。
最后,谢谢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
<p>定时将数据从每个数据库中查出来缓存起来,页面直接从缓存中读取数据。</p>
<p>1、配置数据库链接超时时间</p>
2、增加连接池连接数
<p>首先从页面进行分解。把整个渲染变成首先渲染一个没有数据的页面,然后通过AJAX的方式,别从不同数据源获得不同区块的数据。这样就把一个大数据查询变成了几十个小数据查询。</p>
然后就是针对不同的查询,考虑缓存措施。
<p>好像是两方面的问题,一方面是梳理页面加载数据的逻辑,是同时加载,还是ajax一个个加载,这个得根据你的实际需求。另外一方面后台连接数据库肯定不能请求的时候实时的切换,这样效率太低了,建议加定时任务将数据定时处理缓存起来,页面直接读取缓存;这样首先可以保证页面的访问正常,然后再专注于优化后台更新缓存的逻辑。</p>
<p>和大数据有关系? 你理解错了</p>
<div class='ref'><h4>引用来自“苏大泉”的评论</h4><p>和大数据有关系? 你理解错了</p>
<p>数据层面的话,通常都是使用缓存,大大减少数据库的压力,也提升速度——高并发时都这么处理。缓存除了可以在框架中实现,还可以使用redis来做。redis除了读取速度快,还能分布式共享数据。</p>
其次,你说页面中有的数据加载慢影响其他数据的加载,这个问题难道不都是使用异步加载吗?肯定不能同步加载啊,大大影响用户体验。
<p>尝试加缓存吧,redis或者cachecloud</p>