现有一B/s模式系统(java,jsp开发),因为数据量挺大,用户同时在线500人以上,年数据量1000万条左右,导致速度很慢。而且出现不少错误,特此请高手帮忙解决下列问题:
1.用户进入系统后,进行数据修改时,默认是将本月所有数据都取出,放入ResultSet,能否给出相关sql或数据库方法,优化速度,比如用户选定某一页后,再去取出本页要显示m-n行,赋值给resultset,以免resultset用尽。
2。当用户提交数据录入请求后,应该录入5条,有时只录入3、4条,剩下的不知为何丢失了
3。能否帮忙给出其他一些提高速度的方法
1.用户进入系统后,进行数据修改时,默认是将本月所有数据都取出,放入ResultSet,能否给出相关sql或数据库方法,优化速度,比如用户选定某一页后,再去取出本页要显示m-n行,赋值给resultset,以免resultset用尽。
2。当用户提交数据录入请求后,应该录入5条,有时只录入3、4条,剩下的不知为何丢失了
3。能否帮忙给出其他一些提高速度的方法
解决方案 »
- 如何在存储过程中关闭&转义功能?
- 行级触发器。当新增时,字段改变
- 在Oracle9i中无法用sql语句查看表结构
- 在plsql中能否实现取本地的网卡mac地址或者是硬盘序列号?或者能否在 plsql中直接调用dos命令ipconfig/all
- 如何从一个表的不同记录中提取符合要求的数据?
- 如何将xls文件中的内容导入到Oracle数据库?
- Oracle 8i中字符集乱码问题析及其解决办法
- oracle可以一台机子上安装吗?
- 请问ORACLE9i在哪能下载呀
- 大家介绍一下oci函数的用法吧
- 如何看oracel上的一个存储过程执行了多长时间了(或进度情况)?
- trim函数索引,查询的时候为什么不使用
2.事务处理的问题
请尽量优化SQL,
和程序.
分页显示,用户当前页看不到的没必要选到记录集中,费时也费资源
比如说选出 第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);