在线等待,高分悬赏!高手请进!分不够再开贴!!!

pcboy1982 2004-11-25 09:03:32
现有一B/s模式系统(java,jsp开发),因为数据量挺大,用户同时在线500人以上,年数据量1000万条左右,导致速度很慢。而且出现不少错误,特此请高手帮忙解决下列问题:
1.用户进入系统后,进行数据修改时,默认是将本月所有数据都取出,放入ResultSet,能否给出相关sql或数据库方法,优化速度,比如用户选定某一页后,再去取出本页要显示m-n行,赋值给resultset,以免resultset用尽。
2。当用户提交数据录入请求后,应该录入5条,有时只录入3、4条,剩下的不知为何丢失了
3。能否帮忙给出其他一些提高速度的方法
...全文
157 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fieldsun 2004-11-26
  • 打赏
  • 举报
回复
统一楼上的,用分区比较快
hqskoala 2004-11-25
  • 打赏
  • 举报
回复
对第一个问题可以这样
分页显示,用户当前页看不到的没必要选到记录集中,费时也费资源
比如说选出 第11条到第30条记录
SELECT T1.* FROM (SELECT ROWNUM RN ,T.* FROM (select col1,col2... from t_test where ...) T WHERE ROWNUM <= 30 ) T1 WHERE RN >=11 ;

对于数据量大的问题,建表时可以进行分区(PARTITION BY)使用多个表空间,如果用户习惯按月份查询,就按月份分区,或者按地区(省份)都行,看业务需求了。这样的话也方便备份
CREATE TABLE stock_xactions
(stock_symbol CHAR(5),
stock_series CHAR(1),
num_shares NUMBER(10),
price NUMBER(5,2),
trade_date DATE)
STORAGE (INITIAL 100K NEXT 50K) LOGGING
PARTITION BY RANGE (trade_date)
(PARTITION sx1992 VALUES LESS THAN (TO_DATE(’01-JAN-1993’,’DD-MON-YYYY’))
TABLESPACE ts0 NOLOGGING,
PARTITION sx1993 VALUES LESS THAN (TO_DATE(’01-JAN-1994’,’DD-MON-YYYY’))
TABLESPACE ts1,
PARTITION sx1994 VALUES LESS THAN (TO_DATE(’01-JAN-1995’,’DD-MON-YYYY’))
TABLESPACE ts2);
chao778899 2004-11-25
  • 打赏
  • 举报
回复
对数据进行分区不错-----
qiaozhiwei 2004-11-25
  • 打赏
  • 举报
回复
我认为:提高速度,可以建索引,或缓冲,优化sql;至于丢数据,我觉得是没有处理好多用户并行,你看下程序,应该是有漏洞,可能像liuyi8903(西西) 说的,没有进行事务控制
liuyi8903 2004-11-25
  • 打赏
  • 举报
回复
用连接池加大连接数量。根据你的服务器状况了。
liuyi8903 2004-11-25
  • 打赏
  • 举报
回复
你在进行批量插入的时候应该用jdbc提供的方法。而不应一条一条的插入。那样很可能出现数据丢失。

liuyi8903 2004-11-25
  • 打赏
  • 举报
回复
关于你的第二个问题很奇怪。在你批量录入的时候你肯定是没有进行事务控制的。
而且很可能你用的不是连接池方式。
GerryYang 2004-11-25
  • 打赏
  • 举报
回复
1000万数据跟本不多.
请尽量优化SQL,
和程序.
zmgowin 2004-11-25
  • 打赏
  • 举报
回复
如果有这种需求,可以考虑对数据按月分区,或者干脆一个月一张表来进行处理
bluelamb 2004-11-25
  • 打赏
  • 举报
回复
1. select * from tablename where month=to_char(sysdate,'mm')
2.事务处理的问题
LGQDUCKY 2004-11-25
  • 打赏
  • 举报
回复
如果日期字段是日期型,就建立个函数索引,方便快捷的取出某月的数据。

有时只录入3、4条,剩下的不知为何丢失了?
剩下的指的是什么,这3~4条数据
yujiabian 2004-11-25
  • 打赏
  • 举报
回复
你可以考虑用hibernate之类的工具对数据库表进行映射,实现数据对象持久化,速度可能会好点

3,496

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧