欢迎您访问我爱IT技术网,今天小编为你分享的是oracle数据库教程:【化整为零访问大表的三种方式_Oracle_领测软件测试网】,通过学习这些教程,你能够更深层次的掌握Oracle数据库!
化整为零访问大表的三种方式_Oracle_领测软件测试网
业务场景: 表xngul 大小大于 100G。 上面有(id)是number型自增字段,且是pk。 现在有需求要对这个表进行全表扫描,如果直接 select * from xngul, 则至少要半个小时,
业务场景:
表xngul 大小大于 100G。
上面有(id)是number型自增字段,且是pk。
现在有需求要对这个表进行全表扫描,如果直接 select * from xngul, 则至少要半个小时,
而且一次性返回数据过多,应用程序无法处理。
所以想了办法化整为零,将这个表分段,分段读取。
有以下三种方式。
*******I.两个步骤,一个取分段的头尾,一个按头尾取分段内数据。*********
-取分段的头尾
select min(id) as min_id,
max(id) as max_id
from
(select id
from xngul
where id > :last_max_id
order by id)
where rownum <=:page_size;
-按头尾取中间的数据
select *
from xngul
where id between :min_id and :max_id;
**********************************************************************
――――――――――――――――――――――――――――-
**************II.一个步骤,完成分段和取数据。*************************
-在一个sql中完成分段和取数据
select
b.*
from
(select id
from
(select id
from xngul
where id > :last_max_id
order by id) a
where rownum <=:page_size) a, xngul b
where a.id=b.id;
**********************************************************************
――――――――――――――――――――――――――――-
********III.借助一个表,实现多个进程并发处理。************************
-将分段数据记录到表中,并给每个段赋予一个 batch_id 和 batch_status
insert into batch
(batch_id, batch_status, ceiling_id, floor_id)
select
seq_batch.nextval as batch_id,
’not dealed’ as batch_status,
max(id) as ceiling_id,
min(id) as floor_id
from
(select id
from xngul
where id > :last_max_id
order by id)
where rownum <=:page_size;
-多进程并发取未处理的batch_id
select batch_id, ceiling_id, floor_id
from batch for update nowait
where batch_status=’not dealed’
and rownum<=1;
-取该batch_id的明细数据
select *
from xngul
where id between :min_id and :max_id;
-处理完毕后,更新该batch_status
update batch
set batch_status=’has dealed’
where batch_id=:batch_id;
**********************************************************************
该方式还可以再扩展:
1,如果对数据实时性要求不高,可以在standby上按rowid来分段读取,效率会更高。
2,如果要做表连接,则可以对其中的大表做这个分段,分段的结果再来跟其他小表做连接,同样可以达到化整为零的目的。
关于化整为零访问大表的三种方式_Oracle_领测软件测试网的用户使用互动如下:
相关问题:如何做软件性能测试?
答:网上有相关的资料,您可以先了解一下。 性能测试,就几点需要弄清楚。 1、测试目标是什么。 2、测试内容有哪些。比如,5kw用户访问一个页面,页面响应时间不能超过5s 3、采集数据有哪些 等等,弄清楚这些很重要 另外,就是怎么开展测试。相应《... >>详细
相关问题:自学软件测试
相关问题:关于软件测试中网站压力测试的,知道的请进...
答:你的网站是访问数据库服务器的,是从数据库服务器取数据的,所以你在监控windows resources的时候直接选择你需要的监控的服务器IP即可,记得要选对操作系统,windows server 2008 可用vista代替,你在加压的时候访问量多了,你网站与数据库服务... >>详细
- 软件测试开发技术之Oracle数据库维护的前瞻性_Ora
- Oracle9i 数据库设计指引全集_Oracle_领测软件测
- 数据库中Oracle索引的优化设计_Oracle_领测软件测
- 化整为零访问大表的三种方式_Oracle_领测软件测试
- Oracle数据库编写有效事务指导方针_Oracle_领测软
- oracle性能Statspack使用之命中率调整_Oracle_领
- Oracle数据库和JSP连接要注意的一些问题[1]_Oracl
- 巧用Oracle备份集在测试机上做不完全恢复[2]_Orac
- 软件测试开发技术Oracle数据块损坏及其恢复的总结
- 使用oracle sql loader批量导入数据_Oracle_领测
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
