!665 【WDR】wdr报告中增加instance efficiency 其他相关统计信息

Merge pull request !665 from 宋清怡/master
This commit is contained in:
opengauss-bot
2021-02-01 20:02:49 +08:00
committed by Gitee

View File

@ -3463,19 +3463,22 @@ void GenReport::get_summary_load_profile(report_params* params)
GenReport::add_data(dash, &params->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, &params->Contents);
}