新聞中心
學(xué)習(xí)Oracle時(shí),你可能會(huì)遇到Oracle數(shù)據(jù)塊問題,這里將介紹Oracle數(shù)據(jù)塊問題的解決方法,在這里拿出來和大家分享一下。因數(shù)據(jù)庫中的數(shù)據(jù)被存放在Oracle數(shù)據(jù)塊中,因此如何分配Oracle數(shù)據(jù)塊中的空間將直接影響其存取性能。

目前創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、海北州網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
當(dāng)用update語句更新一行數(shù)據(jù)時(shí),可能使該行的數(shù)據(jù)增加,從而使其在一個(gè)Oracle數(shù)據(jù)塊內(nèi)容納不下。這時(shí),Oracle就尋找能容納下該行的Oracle數(shù)據(jù)塊,如果能找到這樣的塊,便把該行全部存入新塊中(這稱為行移動(dòng))。如果找不到能容納該整行的Oracle數(shù)據(jù)塊,則把該行切成若干片,然后把每一片分別存放在一個(gè)Oracle數(shù)據(jù)塊中,于是這樣的行被存放在多個(gè)Oracle數(shù)據(jù)塊中,這種行稱為鏈接行。查詢一個(gè)鏈接行則需要多次I/O操作,從而產(chǎn)生I/O瓶頸,這將降低數(shù)據(jù)的存取性能。
解決上述問題的辦法是,使用帶list chained rows選項(xiàng)的analyze命令來標(biāo)出表或集中那些移動(dòng)或鏈接的行,并將其集中在一個(gè)輸出表中。對于這些輸出表中的鏈接行,可增加其Oracle數(shù)據(jù)塊的大小,以提高數(shù)據(jù)存取性能。
減少在已有表中的遷移和鏈接行的具體步驟如下:
(1)用analyze命令收集信息:
analyze table *** list chained rows;
(2)查詢輸出表:
select * from chained_rows where table_name='test_chain';
(3)消除遷移行:
創(chuàng)造與已有表有相同列的中間表來持有遷移行和鏈接行:
create table int_***
as seelct * from *** where rowid in (select head_rowid from chained_rows where table_name='***');
從已有表中刪除遷移行和鏈接行:
delete from *** where rowid in (select head_rowid from chained_rows where table_name='***');
把中間表中的行插入已有表中:
insert into *** select 8 from int_***;
撤消中間表:
drop table int_***;
(4)從輸出表中刪除第1步收集的信息:
delete from chained_rows where table_name='***';
(5)再次使用analyze命令,并查詢輸出表;
(6)在輸出表中出現(xiàn)的任何行是鏈接行,可增加Oracle數(shù)據(jù)塊長度。
標(biāo)題名稱:快速學(xué)會(huì)Oracle數(shù)據(jù)塊
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/dhddcei.html


咨詢
建站咨詢
