大型表格的更新.docx
《大型表格的更新.docx》由会员分享,可在线阅读,更多相关《大型表格的更新.docx(12页珍藏版)》请在第一文库网上搜索。
1、大型表格的更新、删除和优化导读:说到对历史数据的清理,分区表格较为简单,我们只需要截断(truncate)需要删除的历史分区即可,但对于一张普通的大表来说,清理历史数据就是个体力活了。传统方式用得比较多的是将delete与批量提交相结合,但速度往往不太理想。那么应该如何提高单表的delete效率呢?是否能学习分区表的方式,从逻辑上对单表进行分区,从而加快删除的速度?说到此处,我们先来回顾下单表的物理存储结构:段-区-块。区是段的最小分配单元,一个区又包含多个块,那么能否利用区或块的物理特性来模拟分区呢?笔者尝试使用区来做分区,为什么不用块呢?因为一个数据库块能存储的数据量不超过1000行,故被
2、排除。我们利用R0WTD对每一行进行按区分片,此处引入了 Oracle内部函数dbms rowid. rowid create帮助我们按区进行ROW ID分片,代码如下:1SQL select A. FILE ID,3A.EXTENTD,M5A.BLOCKD,B7A. BLOCKS,9 rowid betweendbms_rowid. rowid_create(l,13b. data_object_i15a. relative_fno,dbms_rowid rowid_create(1,3b.data_object_i5a.relative_fno,27a. block_id +33 wher
3、e a. segment_nameb. object_name35 and a. owner = b. owner1 and b- object_name = JASON389 and b. owner = SCOTT10order by a. relative_fno, a. block_id;按区分片后的信息输出如下图所示。FILE ID J EXTENT ID I BLOCK ID ! BLOCKS l? ROWIDBETWEElT 11 DBMS ROY179688 rovid between ? AAAWT7AAEAAAEYwAAA/ n4|0,T421797617984179921
4、8IJIJ0180081801618024180321804018304183121832018328183361834418432185601868818816888888888819072192001932819456rovid betvrovid btvrowid btwrovid be tvrovid bttvrovid bttwrovid betwrowid betwrovid btwrovid betvrowid bttvrowid bttwrovid betvrowid betwrowid bttwrowid betwrowid betwrowid betwrowid btwro
5、wid betwrowid betwrowid btvrowid betw8 8 8 8 8n AAAVT7AAEAAAEY4AAA ann AAAYT7AAEAAAEZAAAA/ ann MMTT7MEMAEZIAJ* ann AAAVT7AAEAAAEZQAJUC ann MAVT7AAEMAEZYMA,ann AAMT 7 AAE AAAEZ gAU tnn AAAYT7AAEMAEZOAM mn AAAVT 7 AKE AAAEZ vann AAATT7AAEMAEZ4AAA ann AAAYT 7 AAE AAAE MU/ enn AAMrT7AAEUAEIAAA,ann MAEAA
6、EUAEeQAAA,ann MMTT7AAEAME4AAA ann WmMEMAE.WC an七 MAVT7AAEUKE.oAMCn MAYT7MEAAAE川WC ann AAMTT7AAEMAEiAAAA ann AAAVTrAAEAAAEkAAAA/2M七 AAMrT7AAEAAAEAAAA,n AAMTT7AAEUAEoMAA tnn ? AAAWT7MEAAAEqAAAA? 5n AAAYT7AAEAAAESAUA/ 必n MAYT7AAzAAAEuUAA,ann,AAAWT7ME入AAE#AAAA, an图按区分片后的信息输出有了以上的分片信息,我们只需要带入需要筛选的条件,使用匿名
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大型 表格 更新