欢迎来到天天文库
浏览记录
ID:21749415
大小:106.55 KB
页数:9页
时间:2018-10-24
《晶晶实验二十二之直接路径插入篇》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、晶晶实验二十二之直接路径插入篇上一篇/下一篇2008-04-0223:24:28/个人分类:晶鈕oracle实验系列査看(2019)/评论(33)一、过接路径插入与闷接路径插入的不同这个问题相信很多人都已经知道了,为丫方便初学者,我冉来重帘一遍。createtable表1asselect歹!]1,列2,...select表2insert/*+append7into表1select列1,列2,...select表2如上形式的插入,都叫做直接路径插入。当然,在SQL*LoadePp也旮直接路径插入的形式。所谓直接路径插入,就是绕过Buffercache,直接将数据插入进表所在数据义件中。假如
2、有表AA,要将AA中的数裾插入进表BB,在普通的间接插入卜‘,先将AA的数裾块传进Buffercache,再将BB的块也传进Buffercache,在Buffercache屮从AA的块屮读出行,插入进BB的块中。BB的块就都变成丫脏块,冉等待DBWn把它们写进数据文件。因此,间接路径插入后,AA表的块和BB表的块都会在Buffercache中出现。而直接路径插入卜,将AA表的数据块传进Buffercache十,读出行,直接写进BB表所在的数裾文件。插入完毕后,除丫表尖块外,BB表的数裾块并不会出现在Buffercache中。K面來试验一下:步1:准备试验用表:SQL〉createtabl
3、eaa(idnumber(4),namevarchar2(5));表已创建。SQL〉createtablebb(idnumber(4),namevarchar2(5));表已创建。SQL>insertintoaavalues(1,'aa');已创建1行。SQL>insertintoaavalues(2,'bb');己创建1行。SQL〉insertintoaavalues(3,’cc');已创建1行。SQL〉insertintoaavalues(4,’dd’);已创建1行。SQL>commit;提交完成。SQL>selectdbms_rowid.rowid_relative_fno(row
4、id),dbms_rowid.rowid_block_number(rowid)fromaa;DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)418493418493418493418493现在AA表中有4行,占用块18493。BB表中没有数裾。步2:将buffercache清空,我这甲:使用秉启数掘挥的方法:SQL>shutdownimmediateSQL>startup步3:先川直接路径插入,从AA表向BB表插入数据:SQL>insert/*+append*/intobbselect*fr
5、omaa;已创建4行。SQL〉commit;提交完成。步4:使用V$bh查看Buffercache中的块:SQL〉selectfile#,block#fromv$bhwhereobjd=(selectobjectjdfromuserobjectswhereobject_name='AA');FILE#BLOCK#418491418491418494418492418495418493<-当前也含数据的块418496已选择7行。由于对AA表进行丫全表扫描,因此,AA表中高水点下的所冇块都被读进丫Buffercache,这其中当然包括乜含数裾的块18493。SQL〉selectfile#,b
6、lock#fromv$bhwhereobjd=(selectobjectjdfromuser_objectswhereobject_name=’BB’);FILE#BLOCK#18499418499418497SQL〉selectdbms_rowid.rowid_relative_fno(rowid),dbms_rowid.rowid_block_number(rowid)frombb;DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)418500418500418500418500上面两个查询
7、可以看到,BB表屮的数据占川第18500块,似足,直接路径插入后,18500块并没被调进Buffercache。Buffercache屮只有18499和18497。其中18499足段头块,KU18497是L1块,直接路径插入后,耍修改L1块中的数据块使用怙况。步5:再试一次间接路径插入:SQL>insertintobbselect*fromaa;已创建4行。SQL〉commit;提交完成。SQL>selectfile#,block#
此文档下载收益归作者所有