一、統計資訊
統計資訊主要是描述資料庫中表、索引的大小,規模,資料分布狀況等的一類資訊。
last_analyzed欄位表示上次統計資訊蒐集的時間,可以根據這個字段快速的了解最近一次統計資訊蒐集的時間。
二、收集統計資訊的方法
1、使用gather_stats_job自動收集
在建立資料庫時自動建立,由排程程式進行管理,收集資料庫中優化程式統計資訊缺失或已過時的所有物件的統計資訊。
2、使用dbms_stats程式包手動收集
收集的是系統統計資訊
3、通過設定資料庫初始化引數進行收集
4、通過從另乙個資料庫匯入統計資訊進行收集
三、oracle自動收集統計資訊
optimizer_mode引數的值是choose,choose不是優化器模式,它表示在分析資料庫中的語句時,如果在物件上有統計資訊,就使用cbo方式生產執行計畫,如果沒有,就使用rbo模式。
select window_name as "任務名",repeat_interval "任務重複間隔時間",duration "持續時間" from dba_scheduler_windows;
select * from dba_scheduler_wingroup_members;
1、停止任務
begin
dbms_scheduler.disable(
name=>'"sys"."friday_window"',
force=>true);
end;
2、修改任務的持續時間,單位是分鐘
begin
dbms_scheduler.set_attribute(
name=>'"sys"."friday_window"',
attribute=>'duration',
value=>numtodsinterval(180, 'minute'));
end;
3、開始執行時間,byhour=2,表示2點開始執行
begin
dbms_scheduler.set_attribute(
name=>'"sys"."friday_window"',
attribute=>'repeat_interval',
value=>'freq=weekly;byday=mon;byhour=2;byminute=0;bysecond=0');
end;
4、開啟任務
begin
dbms_scheduler.enable(
name=>'"sys"."friday_window"');
end;
5、禁用自動統計功能(。。。)
begin
dbms_scheduler.disable('gather_stats_job');
end;
/四、dbms_stats包
dbms_stats包,提供了蒐集(gather)、刪除(delete)、匯出(export)、修改(set)統計資訊的方法。
dbms_stats與analyze的區別:
dbms_stats能正確收集分割槽表的統計資訊,也就是說能夠收集global statistic,而analyze只能收集最低層次物件的統計資訊,然後推導和彙總出高一級物件的統計資訊,如分割槽表只會收集分割槽統計資訊,然後再彙總出所有分割槽的統計資訊,得到表一級的統計資訊。
1、global statistic
global statistic是指直接從物件本身收集到的統計資訊,而不是從下一級物件推導和彙總出來的統計資訊,對於優化器來說非常重要,乙個sql,除非其查詢條件限制了資料只在分割槽上,否則大多數情況下需要golbal statistic才能得到正確的執行計畫。有的統計值可以從下一級物件進行彙總後得到,如表的總行數,可以通過各分割槽的行數相加得到。但有的統計值不能通過下一級物件得到,比如列上的唯一值數量(distinct value)以及密度值(density)。
2、使用dbms_stats.gather_database_stats收集整個資料庫的統計資訊
begin
dbms_stats.gather_database_stats(estimate_percent => dbms_stats.auto_sample_size,
method_opt => 'for all indexed columns',
options => 'gather auto',
cascade => true);
end;
/引數說明:
(1)estimate_percent:取樣的百分比,使用dbms_stats.auto_sample_size選項允許oracle自動估算要取樣的乙個segment的最佳百分比。
(2)method_opt選項適合在表和索引資料發生變化時重新整理統計資料:
SQL統計資訊解釋
sql基礎 統計資訊解釋 在平時優化sql的時候,最長用的就是 set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。輸出項含義 table 表的名稱。scan count 執行的掃瞄次數。logic...
SQL基礎 統計資訊解釋
在平時優化sql的時候,最長用的就是 set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。輸出項含義 table 表的名稱。scan count 執行的掃瞄次數。logical reads 從資料快...
SQL基礎 統計資訊解釋
在平時優化sql的時候,最長用的就是 set statistics on,它可以用來檢視我們寫的查詢語句到底效能如何,不過,究竟這個效能的指標是怎麼樣的呢?首先需要明白的,就是各項資料的意義。含義table 表的名稱。scan count 執行的掃瞄次數。logical reads 從資料快取讀取的...