oracle 日结 数据量大,如何对一个oracle11gsql语
如何對一個oracle11gsql語句進行統(tǒng)計分析
可以通過district來取出字段,之后通過count計算總數(shù)量。
sql:select count(district id) from tablename;
如果id字段沒有空值的話,可以通過count統(tǒng)計字段的總數(shù)量(字段內(nèi)容可能重復(fù))。
sql:select count(id) from tablename;如何在ORACLE系統(tǒng)中對表進行統(tǒng)計分析
begin
dbms_stats.gather_table_stats( ownname=>'XXXX',tabname => 'XXXX' ,ESTIMATE_PERCENT=>100,degree=>8, CASCADE=>true);
end;只知道對Oracle數(shù)據(jù)庫的單表做表分析語句是 analyze table 表名 compute statistics
全表還是全庫啊?
全表的話,可以針對某個用戶來分析:
SQL> exec dbms_stats.gather_schema_stats(ownname=>'scott',options=>'gather auto',estimate_percent=>dbms_stats.auto_sample_size,degree=>6); 具體的參數(shù)可以根據(jù)實際情況修改,也可以加其他的參數(shù)進來
全庫的話,10g會自動分析的,但是也可以收到分析,統(tǒng)計分析要消耗大量資源,建議不要在業(yè)務(wù)繁忙時做:
SQL> exec dbms_stats.gather_system_stats('start'); 開始
SQL> exec dbms_stats.gather_system_stats('stop'); 結(jié)束
SQL> exec dbms_stats.gather_system_stats('interval',interval=>N); 一直工作N分鐘oracle分析表有什么用
Oracle中分析表的作用
1.分析更新表的統(tǒng)計信息,,有可能導(dǎo)致執(zhí)行計劃改變..
2.以的analyze table abc compute statistics;這條為例,生成的統(tǒng)計信息會存在于user_tables這個視圖,查看一下select * from user_tables where table_name='ABC';
觀察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN幾列你就會明白,這就是變化。分析完表之后,會發(fā)現(xiàn)DBA_tables 視圖中,以前很多列值是空的,現(xiàn)在開始有數(shù)據(jù)了。這些數(shù)據(jù)就是分析表得到的.
3.怎么樣分析表或索引
命令行方式可以采用analyze命令
如Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
等等。
如果想分析整個用戶或數(shù)據(jù)庫,還可以采用工具包,可以并行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以后提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
這是對命令與工具包的一些總結(jié)
(1)、對于分區(qū)表,建議使用DBMS_STATS,而不是使用Analyze語句。
a) 可以并行進行,對多個用戶,多個Table
b) 可以得到整個分區(qū)表的數(shù)據(jù)和單個分區(qū)的數(shù)據(jù)。
c) 可以在不同級別上Compute Statistics:單個分區(qū),子分區(qū),全表,所有分區(qū)
d) 可以倒出統(tǒng)計信息
e) 可以用戶自動收集統(tǒng)計信息
(2)、DBMS_STATS的缺點
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,這兩個仍舊需要使用Analyze語句。
c) DBMS_STATS 默認不對索引進行Analyze,因為默認Cascade是False,需要手工指定為True
(3)、對于Oracle 9里面的External Table,Analyze不能使用,只能使用DBMS_STATS來收集信息.oracle數(shù)據(jù)庫 ,想統(tǒng)計一個用戶下,所有表的記錄的總條數(shù),用什么語句可以實現(xiàn)?
analyze table table_name COMPUTE STATISTICS
對表分析后在使用
select count(^) from table_name
如果你的table_name 有主鍵 ID
select count(ID) from table_name 在統(tǒng)計的時候會用到主鍵索引oracle日結(jié)統(tǒng)計,求大神幫忙分析一下統(tǒng)計SQL如何書寫
表應(yīng)該加上注釋,要不沒法寫。
大概思路是這樣的,首先統(tǒng)計出每一天每一個員工最晚一次的日結(jié)時間。這里分為兩種情況,周5和其他日期需要分別判斷。
然后將用戶表和剛才的日結(jié)匯總表進行左連接,日結(jié)匯總表為空的部分就意味著該員工沒有日結(jié),外面套一層,count一下即可。oracle為什么要搜集統(tǒng)計信息
alter system set events '10053 trace name context forever,level 2';
select * from scott.dept;
alter system set events '10053 trace name context off';
到$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/ (11g路徑)找一個叫 *ora*.trc (默認是這個)的文件,里面在生成執(zhí)行計劃的時候會用的下面的這個就是統(tǒng)計信息里面的信息
...
***************************************
BASE STATISTICAL INFORMATION
***********************
Table Stats::
Table: DEPT Alias: DEPT
#Rows: 4 #Blks: 5 AvgRowLen: 20.00 ChainCnt: 0.00
Index Stats::
Index: PK_DEPT Col#: 1
LVLS: 0 #LB: 1 #DK: 4 LB/K: 1.00 DB/K: 1.00 CLUF: 1.00
...
這個是表及索引的基礎(chǔ)信息,生成執(zhí)行計劃時,通過一系列參數(shù)來計算成本,這就是CBO用獲得最低成本的計劃的依據(jù)之一 如果統(tǒng)計信息準確則可以生成較好的計劃,如果統(tǒng)計信息不準確 生成的計劃就不一定是最優(yōu)的怎么樣停止oracle的統(tǒng)計分析
在sysdba下執(zhí)行:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
就可以了。oracle表分析命令dbms_stats分析表使用問題
主要收集如行數(shù),列的distince、表段大小等等
如果做表關(guān)聯(lián)查詢,統(tǒng)計信息也會用到
一般要分析,不然統(tǒng)計信息不準可能走錯執(zhí)行計劃,比如一個分區(qū)原先1行,插入后變幾億行,這時統(tǒng)計信息不準確的話可能就走錯誤執(zhí)行計劃了。在oracle生產(chǎn)庫中,我的一個表的數(shù)據(jù)有10億行記錄,怎么快速計算有多少行,不要告訴我用count(*)之類的答案
oracle 有個數(shù)據(jù)字典 表分析之后 會記錄行數(shù) 貌似是 all_tables 標簽:count id 字段
總結(jié)
以上是生活随笔為你收集整理的oracle 日结 数据量大,如何对一个oracle11gsql语的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle pcm x6-2,Sun
- 下一篇: oracle standby同步,ORA