海量数据的处理,请教高手。分不够可以加。

DirectRay 2010-01-05 06:10:43
依照惯例,描述一下应用场景。

有个系统,分为主站和一个网关程序。有一个应用,整体流程如下:

1 用户点击JSP上的按钮,主站根据所选信息通过socket组织命令下发给网关。

2 网关经过处理,得到数据,并进行合法性判断。

3 网关将经过处理的数据存入数据库,并通过之前的socket回复主站成功。

4 主站接到成功报文后,关闭socket连接。

5 主站根据所选条件,去数据库查询相关信息,这些信息就是刚才网关程序存入数据库的,也就是网关程序解析出来的数据。

6 主站将经过处理的信息展示在JSP上,通过Ajax刷新页面。

现在的问题是,由于数据量巨大,每天新增的数据约有4KW条记录,导致数据库无限膨胀。目前已经进行过分表处理。但是每天的记录还是很多。基本上是在4KW条记录里捞出几百条来,速度非常慢。现在的速度瓶颈卡在3-6之间,非常慢,主要是数据库操作慢。

我来归纳一下。1-4是一个流程,不可打破。5-6是一个流程,不可打破。也就是说,1-4之间的步骤基本不可改,5-6也一样。

主要的目的是,通过这一整套流程刷新JSP页面上的数据。数据必须存入数据库,但是呢,主站取的数据不一定要来自于数据库,可以有其他方式返回。只要能拿到就可以。换言之,5 6两步的操作方式是可以修改的。现在两套软件都是我们自主开发。

问题来了。

怎么改比较合适呢?
...全文
152 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sniffer12345 2010-01-07
  • 打赏
  • 举报
回复
楼上貌似已经把问题解决了
要是显示完了以后还会查到的话 那就只能用缓存了。。用空间换取时间
  • 打赏
  • 举报
回复
嘿嘿,看了看,不懂啊
DirectRay 2010-01-06
  • 打赏
  • 举报
回复
显示完了就不用了。网关程序会另外保存一份数据的。那我就先CREATE TABLE,然后SELECT,然后TRUNCATE TABLE,然后DROP TABLE?
crazylaa 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 directray 的回复:]
是的。回复疯狂的拉拉同学,5 6就是为了显示而已。
我请教了一个中科院的同志,人家给出的解决方案和你的差不多。临时表。
请问,有什么需要注意的么?建表和插入数据以及查询数据有何需要注意的地方?可以给我留言,加QQ聊。
[/Quote]
显示完了的接着还查不?是不是1234做完了就5马上 搜,搜过去显示完了就马上删?

如果你的临时数据同时保存不多的话,临时表上不要建索引。用完就删。(DML频繁的表上有索引影响效率,特别是你这种单日上KW的。)
DirectRay 2010-01-05
  • 打赏
  • 举报
回复
是的。回复疯狂的拉拉同学,5 6就是为了显示而已。
我请教了一个中科院的同志,人家给出的解决方案和你的差不多。临时表。
请问,有什么需要注意的么?建表和插入数据以及查询数据有何需要注意的地方?可以给我留言,加QQ聊。
crazylaa 2010-01-05
  • 打赏
  • 举报
回复
5查的如果跟3是一一对应的话,其实在3可以插入数据库之后,把数据一起通过socket返回给jsp啊
如果不能在3返回,而5查的又是刚才在3里面做的处理的那些,那么在3,可以考虑用临时表来存等下5要查的,5查完了之后就把临时表数据删除。。
但是你的业务逻辑描述得还是不够细。比如你得5查了只是为了显示?5/6两步得具体过程?

楼主貌似在做短信网关,所以有这么大数据量。
ojuju10 2010-01-05
  • 打赏
  • 举报
回复
业务逻辑描写的很清楚,但是没有给出表结果,表之间的业务逻辑,怎么优化?
相关推荐
发帖
Oracle 高级技术

3471

社区成员

Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
帖子事件
创建了帖子
2010-01-05 06:10
社区公告
暂无公告