mbrcの神託10053

準備
は、いくつかの方法(11グラム)で1.1は、トレースファイルを取ります:

select tracefile ,s.module from v$process p,v$session s where s.paddr=p.addr and s.username='TEST' and module ='SQL*Plus'
SELECT value FROM v$diag_info  WHERE name='Default Trace File';

2 生成10053

alter session set events '10053 trace name context forever';
exec dbms_system.set_ev(sid,serial#,10053,8,'test');
alter session set events '10053 trace name context forever';

または
execute DBMS_SQLDIAG.DUMP_TRACE(p_sql_id=>'5s4ny8pxtdkyf', p_child_number=>0, p_component=>'Optimizer', p_file_id=>'SQL_TRACE_10053');
3を実行し、SQL、閉じられた跡

select * from T_KINGDEE_CONSUME_DAY;
alter session set events '10053 trace name context off';

二つの分析
式オラクル費は次のとおりです。
コスト=(
#SRds sreadtim +
#MRds
mreadtim +
CPUCycles / CPUSPEED
)/ sreadtime
ように簡略化:
コスト=#+ SRDS #mrds mreadtim / sreadtim cpucycles +#/(cpuspped sreadtim)
#SRdsを-単一ブロックの数が回数が単一のブロックを読み出す読み出し、
読み出さマルチブロックは、複数の読み出し回数- #MRdsを
CPUサイクル数CPUサイクル- #CPUCyles
sreadtim -単一ブロックは、単一のデータ・ブロックの平均時間読むのに時間を読み取る
mreadtimを-マルチ平均時間ブロックは、複数のデータブロック読むのに時間を読み取る
CPUSPEED -第2のCPUサイクル/秒あたりのCPUサイクル
ソース:
ソース:
SELECTを* $からsys.aux_stats
パラメータの
フラグ:フラグ
CPUSPEEDNW:CPUのワークロード統計の非周波数モード、直接ハードウェアから
IOSEEKTIM:IOアドレス時間(ms)、直接ハードウェアから
IO転送レート(バイト/秒):IOTFRSPEED
sreadtim:単一のデータブロック読み取るための平均時間
データブロックの複数の読み取りの平均時間:MREADTIMを
CPUSPEEDを:ワークロード統計CPU周波数、現在の作業負荷評価モードに応じて適切な値
MBRC:エンドのOracle統計収集マルチブロック読み出しが読み出しすることができる後DB_FILE_MULTIBLOCK_READ_COUNTのいくつかのデータ・ブロックの評価
MAXTHR:IO最大スループット(バイト/秒)
SLAVETHR :平均IOスループット(バイト/秒)
トレースファイルの部分を表示します。


システム統計情報

NOWORKLOAD統計用い
CPUSPEEDNWを:3074万命令/秒(デフォルトは100)
IOTFRSPEED:ミリ秒あたり4096バイト(デフォルトは4096である)
IOSEEKTIM:10ミリ秒(デフォルトは10)
MBRC:NO値ブロック(デフォルトは8です)

:私はここのように計算されている
sreadtim = IOSEEKTIM + DB_BLOCK_SIZE / IOTFRSPEED + 10 = 4096分の8192 = 12
mreadtim = IOSEEKTIM + MBRC DB_BLOCK_SIZE / IOTFRSPEED 10 + 8 = 8/4 = 26
ビュートレースファイル:

BASE STATISTICAL INFORMATION

表統計::
表:T_KINGDEE_CONSUME_DAY別名:T_KINGDEE_CONSUME_DAY
#Rows:377547 #Blks:2656 AvgRowLen:40.00 ChainCnt:0.00
インデックス統計::
ランキング:IX_KINGDEE_CONSUME_DAY_N1コル番号:2
LVLS:2 #LB:3743 #DK:951 LB / K: 3.00 DB / K:397.00 CLUF:377547.00
ランキング:PK_T_KINGDEE_CONSUME_DAYコル番号:1 2
LVLS:2 #LB:2228 #DK:377547 LB / K:1.00 DB / K:1.00 CLUF:2979.00
T_KINGDEE_CONSUME_DAYのアクセスパス分析

IO_COST =#のMRD mreadtim / sreadtime = ROUND(8分の2656) 12分の26 = 719

コンピューティングCPU_COST

explain plan for select * from T_KINGDEE_CONSUME_DAY;
select * from table(dbms_xplan.display());
select cpu_cost from plan_table; 
  CPU_COST
------
 135954115

CPU_COST = 135954115 /(3074 * 12 )/1000=3.68
全体的なコスト= IO_COST + CPU_COST = 719 + 3.7 = 722.7
ビュートレースファイル部分:

SINGLE TABLEアクセスパス
T_KINGDEE_CONSUME_DAY [T_KINGDEE_CONSUME_DAY]のための単一表カーディナリティの推定
T_KINGDEE_CONSUME_DAY別名:T_KINGDEE_CONSUME_DAY表
カード:オリジナル:377547.000000四捨五入:377547コンピュー:377547.00非調整:377547.00
アクセスパス:テーブルスキャン
コスト:724.69 Respの:724.69度:0
Cost_io:721.00 Cost_cpu:135954115
Resp_io:721.00 Resp_cpu:135954115
ベスト:: AccessPath:テーブルスキャン
コスト:724.69度:1 Respの:724.69カード:377547.00バイト:0

MBRCに調整
の両方DB_FILE_MULTIBLOCK_READ_COUNT = 64 =のSQL> SETシステムALTERの範囲を、
トレースを参照してください。

システム統計情報

NOWORKLOAD統計用い
CPUSPEEDNWを:3074万命令/秒(デフォルトは100)
IOTFRSPEED:ミリ秒あたり4096バイト(デフォルトは4096である)
IOSEEKTIM:10ミリ秒(デフォルトは10)
MBRC:NO値ブロック(デフォルトは64です)

コストが再計算されます。

sreadtim = ioseektim + DB_BLOCK_SIZE / IOTFRSPEED = 10 + 4096分の8192 = 12
mreadtim = ioseektim + DB_FILE_MULTIBLOCK_READ_COUNT DB_BLOCK_SIZE / IOTFRSPEED = 10 + 64 8月4日= 138
IO_COST =#のMRD mreadtim / sreadtime = ROUND(2656 / 64,2) 138 / 12 = 477.25
CPUコスト未变;
コスト= IO_COST + CPU_COST = 3.68 + 477.25 = 480.93

10053の結果を表示します。

T_KINGDEE_CONSUME_DAYのアクセスパス分析


SINGLE TABLEアクセスパス
T_KINGDEE_CONSUME_DAY [T_KINGDEE_CONSUME_DAY]のための単一表カーディナリティの推定
T_KINGDEE_CONSUME_DAY別名:T_KINGDEE_CONSUME_DAY表
カード:オリジナル:377547.000000四捨五入:377547コンピュー:377547.00非調整:377547.00
アクセスパス:テーブルスキャン
コスト:482.69 Respの:482.69度:0
Cost_io:479.00 Cost_cpu:135954115
Resp_io:479.00 Resp_cpu:135954115
ベスト:: AccessPath:テーブルスキャン
コスト:482.69度:1 Respの:482.69カード:377547.00バイト:0

ビューは、結果を説明します。

PLAN_TABLE_OUTPUT
--------------------------------------------------------------
Plan hash value: 873558201 
----------------------------------------------------------------------
| Id  | Operation                    | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                       |   377K|    14M|   483   (1)| 00:00:06 |
|   1 |  TABLE ACCESS FULL| T_KINGDEE_CONSUME_DAY |   377K|    14M|   483   (1)| 00:00:06 |

私たちは、ほとんどのパラメータの_table_scan_cost_plus_oneによって制御見つかっ;
パラメータを確認してください。

SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc describ FROM x$ksppi x,x$ksppcv y
  WHERE x.inst_id = USERENV ('Instance')
   AND y.inst_id = USERENV ('Instance')
   AND x.indx = y.indx
   AND x.ksppinm LIKE '%_table_scan_cost_plus_one%';

無効にする
alter session set "_table_scan_cost_plus_one"=false;
実行計画を表示するには、再度:

Plan hash value: 873558201

-------------------------------------------------------------------------------------------
| Id  | Operation         | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |                       |   377K|    14M|   482   (1)| 00:00:06 |
|   1 |  TABLE ACCESS FULL| T_KINGDEE_CONSUME_DAY |   377K|    14M|   482   (1)| 00:00:06 |
-------------------------------------------------------------------------------------------

721に調整されていないDB_FILE_MULTIBLOCK_READ_COUNT前に、483を調整した後、調整し、再び482から483までダウンした後、偽_table_scan_cost_plus_oneである。
結論:
このパラメータは、あなたの費用の全体の結果に影響を与えDB_FILE_MULTIBLOCK_READ_COUNT(%のCPU)の;

おすすめ

転載: blog.51cto.com/snowhill/2412416