oracle 10g
先建立個統計表
create table t_analyz_monitor_index
(f_index_name varchar2(50),
f_del_lf_rows number,
f_lf_rows number,
f_rate number(4,2),
f_monitor_date date default sysdate not null
);再建個歷史表
create table t_analyz_index_stats as select * from index_stats
做個分析過程 查出表並且 分析 插入歷史表 統計刪除比率到 統計表
create or replace procedure p_analyz_day_index_satas is
v_sql varchar2(100);
begin
for a in (select index_name from user_indexes where index_type<>'lob') loop
v_sql := ' analyze index ' || a.index_name || ' validate structure';
execute immediate v_sql;
insert into t_analyz_index_stats
select * from index_stats;
insert into t_analyz_monitor_index(f_index_name, f_del_lf_rows, f_lf_rows, f_rate)
select name,del_lf_rows,lf_rows, round(del_lf_rows * 100 / decode((lf_rows + del_lf_rows),0,1), 2)
from index_stats;
end loop;
end;
注意所查到的索引是在同個使用者名稱下的
關於索引碎片
整理表碎片.這個很多人都不知道,其實因為表的記錄數變多,在硬碟上佔的容量變大,所以會產生一定量的碎片.如果記錄多,表多的話,碎片也可能會增多.所以要定時的整理碎片.但這個碎片和一般的檔案碎片不一樣,sql server有專門的語句用於表碎片.下樓補上語句 首先,用下面的語句,檢查 修復資料庫 並整理...
Oracle 工具類 Sql 分析索引的 碎片率
cbo基於成本的優化器分析 分配合適的儲存桶 使用儲存過程dbms stats 1 索引分析 分析語句 sql analyze index validate structure online 分析表 analyze table tablename compute statistics analyze...
mysql索引碎片整理 MysqL碎片整理優化
先來說一下什麼是碎片,怎麼知道碎片有多大!簡單的說,刪除資料必然會在資料檔案中造成不連續的空白空間,而當插入資料時,這些空白空間則會被利用起來.於是造成了資料的儲存位置不連續,以及物理儲存順序與理論上的排序順序不同,這種是資料碎片.實際上資料碎片分為兩種,一種是單行資料碎片,另一種是多行資料碎片.前...