Temat: Defragmentacja tabeli


Temat: Defragmentacja tabeli
Data: 2013-09-22
Treść:
Konieczność przebowy tablic przy dużej ilość operacji DML jest oczywista. Na początek odświerz statystyki tabeli:
begin
  dbms_stats.gather_table_stats('SW','T_TABLE');
end;
Uwaga: to polecenie może zająć bardzo dużo czasu, aby go skrócić można użyć parametru estimate_percent. Teraz można już sprawdzić rozmiar tablicy:
select table_name,round((blocks*8),2)||'kb' "size"
from user_tables
where table_name = 'T_TABLE'
A także ile miejsca zajmują dane w tej tablicy:
select table_name,round((num_rows*avg_row_len/1024),2)||'kb' "size"
from user_tables
where table_name = 'T_TABLE'
Jeśli różnica pomiędzy rozmiarem tablicy a rozmiarem danych w niej zawartych jest spora o co walczyć.Pamietaj jednak że nie zejdzie się poniżej wartości Pctfree, która standartowo wynosi 10%. Aby przebudować tablice, można skorzystać z jednej z 4 opcji:
1. alter table ... move + rebuild indexes
2. export / truncate / import
3. create table as select ( CTAS)
4. dbms_redefinition
Ja użyłem opcji
alter table t_table move;
Jeśli różnica pomiędzy rozmiarem tablicy a rozmiarem danych w niej zawartych jest spora o co walczyć.Pamietaj jednak że nie zejdzie się poniżej wartości Pctfree, która standartowo wynosi 10% Aby przebudować tablice, można skorzystać z jednej z 4 opcji:
1. alter table ... move + rebuild indexes
2. export / truncate / import
3. create table as select ( CTAS)
4. dbms_redefinition
Ja użyłem opcji
alter table t_table move;
<< Powrót <<

powered by sw