Suite à une conversation intéressante à propos du facteur de Håkan et Oracle, j’ai découvert que vous pouviez limiter le nombre de lignes par bloc dans une table artificiellement et sans toucher PCTFREE… Démonstration :
create table x (x number);
select spare1
from sys.tab$, dba_objects do
where do.object_id = tab$.obj#
and do.object_name = 'X';
SPARE1
------
736
insert into X values (1);
commit;
alter table X minimize records_per_block;
truncate table x;
begin
for i in 1..200 loop
insert into x values (1);
end loop;
end;
/
select rows_per_block, count(*) num_blocks
from
(select dbms_rowid.ROWID_BLOCK_NUMBER(rowid) block,
count(*) rows_per_block
from x
group by dbms_rowid.ROWID_BLOCK_NUMBER(rowid))
group by rows_per_block;
ROWS_PER_BLOCK NUM_BLOCKS
-------------- ----------
2 100
select spare1-8*power(16,3) rows_per_block
from sys.tab$, dba_objects do
where do.object_id = tab$.obj#
and do.object_name = 'X';
ROWS_PER_BLOCK
--------------
1
Un nouvel éventail de possibilités…
2 réflexions sur “Pas plus de 2 lignes par bloc !”
Thanks for such an amazing blog. This blog is one of the most educating blog I have ever visited.
Bookmarked this blog so that I can come again and read more good stuf.
Thanks
Juste comme note, cette chose était mentionné dans livre de Lewis de 8i – Building efficient databases
Igor
Les commentaires sont fermés.