!665 【WDR】wdr报告中增加instance efficiency 其他相关统计信息
Merge pull request !665 from 宋清怡/master
This commit is contained in:
@ -3463,19 +3463,22 @@ void GenReport::get_summary_load_profile(report_params* params)
|
||||
GenReport::add_data(dash, ¶ms->Contents);
|
||||
}
|
||||
|
||||
static void get_summary_instance_efficiency_bufferHit(report_params* params, dashboard* dash)
|
||||
/* summary ratios about instance effciency: buffer hit ratio, cpu efficiency ratio, radio of redo
|
||||
* with nowait, soft parse ratio and excution without parse ratio */
|
||||
static void get_summary_instance_efficiency_percentages(report_params* params, dashboard* dash)
|
||||
{
|
||||
List* query_result = NIL;
|
||||
StringInfoData query;
|
||||
initStringInfo(&query);
|
||||
|
||||
appendStringInfo(&query,
|
||||
"select 'Buffer Hit %%: ' as \"Metric Name\", "
|
||||
" case when s.all_reads = 0 then 1 else round(s.blks_hit * 100 / s.all_reads) end as \"Metric Value\" "
|
||||
"select "
|
||||
" unnest(array['Buffer Hit %%', 'Effective CPU %%', 'Redo NoWait %%', 'Soft Parse %%', 'Non-Parse CPU %%']) as \"Metric Name\", "
|
||||
" unnest(array[case when s1.all_reads = 0 then 1 else round(s1.blks_hit * 100 / s1.all_reads) end, s2.cpu_to_elapsd, s3.redo_nowait, s4.soft_parse, s5.non_parse]) as \"Metric Value\" "
|
||||
"from "
|
||||
" (select (snap_2.all_reads - coalesce(snap_1.all_reads, 0)) as all_reads, "
|
||||
" (snap_2.blks_hit - coalesce(snap_1.blks_hit, 0)) as blks_hit "
|
||||
" from"
|
||||
" from "
|
||||
" (select sum(coalesce(snap_blks_read, 0) + coalesce(snap_blks_hit, 0)) as all_reads, "
|
||||
" coalesce(sum(snap_blks_hit), 0) as blks_hit "
|
||||
" from snapshot.snap_summary_stat_database "
|
||||
@ -3483,8 +3486,64 @@ static void get_summary_instance_efficiency_bufferHit(report_params* params, das
|
||||
" (select sum(coalesce(snap_blks_read, 0) + coalesce(snap_blks_hit, 0)) as all_reads, "
|
||||
" coalesce(sum(snap_blks_hit), 0) as blks_hit "
|
||||
" from snapshot.snap_summary_stat_database "
|
||||
" where snapshot_id = %ld) snap_2"
|
||||
" ) as s",
|
||||
" where snapshot_id = %ld) snap_2 "
|
||||
" ) s1, "
|
||||
" (select round(cpu_time.snap_value * 100 / greatest(db_time.snap_value, 1)) as cpu_to_elapsd "
|
||||
" from "
|
||||
" (select coalesce(snap_2.snap_value, 0) - coalesce(snap_1.snap_value, 0) as snap_value "
|
||||
" from "
|
||||
" (select snap_stat_name, snap_value from snapshot.snap_global_instance_time "
|
||||
" where snapshot_id = %ld and snap_stat_name = 'CPU_TIME') snap_1, "
|
||||
" (select snap_stat_name, snap_value from snapshot.snap_global_instance_time "
|
||||
" where snapshot_id = %ld and snap_stat_name = 'CPU_TIME') snap_2) cpu_time, "
|
||||
" (select coalesce(snap_2.snap_value, 0) - coalesce(snap_1.snap_value, 0) as snap_value "
|
||||
" from "
|
||||
" (select snap_stat_name, snap_value from snapshot.snap_global_instance_time "
|
||||
" where snapshot_id = %ld and snap_stat_name = 'DB_TIME') snap_1, "
|
||||
" (select snap_stat_name, snap_value from snapshot.snap_global_instance_time "
|
||||
" where snapshot_id = %ld and snap_stat_name = 'DB_TIME') snap_2) db_time "
|
||||
" ) s2, "
|
||||
" (select (bufferAccess.snap_wait - bufferFull.snap_wait) * 100 / greatest(bufferAccess.snap_wait, 1) as redo_nowait "
|
||||
" from "
|
||||
" (select coalesce(snap_2.snap_wait) - coalesce(snap_1.snap_wait, 0) as snap_wait "
|
||||
" from "
|
||||
" (select snap_wait from snapshot.snap_global_wait_events "
|
||||
" where snapshot_id = %ld and snap_event = 'WALBufferFull') snap_1, "
|
||||
" (select snap_wait from snapshot.snap_global_wait_events "
|
||||
" where snapshot_id = %ld and snap_event = 'WALBufferFull') snap_2) bufferFull, "
|
||||
" (select coalesce(snap_2.snap_wait) - coalesce(snap_1.snap_wait, 0) as snap_wait "
|
||||
" from "
|
||||
" (select snap_wait from snapshot.snap_global_wait_events "
|
||||
" where snapshot_id = %ld and snap_event = 'WALBufferAccess') snap_1, "
|
||||
" (select snap_wait from snapshot.snap_global_wait_events "
|
||||
" where snapshot_id = %ld and snap_event = 'WALBufferAccess') snap_2) bufferAccess "
|
||||
" ) s3, "
|
||||
" (select round((snap_2.soft_parse - snap_1.soft_parse) * 100 / greatest((snap_2.hard_parse + snap_2.soft_parse)-(snap_1.hard_parse + snap_1.soft_parse), 1)) as soft_parse "
|
||||
" from "
|
||||
" (select sum(snap_n_soft_parse) as soft_parse, sum(snap_n_hard_parse) as hard_parse from snapshot.snap_summary_statement "
|
||||
" where snapshot_id = %ld ) snap_1, "
|
||||
" (select sum(snap_n_soft_parse) as soft_parse, sum(snap_n_hard_parse) as hard_parse from snapshot.snap_summary_statement "
|
||||
" where snapshot_id = %ld ) snap_2 "
|
||||
" ) s4, "
|
||||
" (select round((snap_2.elapse_time - snap_1.elapse_time) * 100 /greatest((snap_2.elapse_time + snap_2.parse_time)-(snap_1.elapse_time + snap_1.parse_time), 1)) as non_parse "
|
||||
" from "
|
||||
" (select sum(snap_total_elapse_time) as elapse_time, sum(snap_parse_time) as parse_time from snapshot.snap_summary_statement "
|
||||
" where snapshot_id = %ld ) snap_1, "
|
||||
" (select sum(snap_total_elapse_time) as elapse_time, sum(snap_parse_time) as parse_time from snapshot.snap_summary_statement "
|
||||
" where snapshot_id = %ld ) snap_2 "
|
||||
" ) s5; ",
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id,
|
||||
params->begin_snap_id,
|
||||
params->end_snap_id);
|
||||
|
||||
@ -3510,8 +3569,8 @@ static void get_summary_instance_efficiency(report_params* params)
|
||||
dash->tableTitle = "Instance Efficiency Percentages (Target 100%)";
|
||||
dash->desc = lappend(dash->desc, (void*)desc);
|
||||
|
||||
/* instance efficiency, Buffer Hit %: */
|
||||
get_summary_instance_efficiency_bufferHit(params, dash);
|
||||
/* instance efficiency, Buffer Hit %, Effective CPU % extra */
|
||||
get_summary_instance_efficiency_percentages(params, dash);
|
||||
GenReport::add_data(dash, ¶ms->Contents);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user