关于ashrpt中行源的CPU + Wait for CPU事件深入解读
该等待事件并不包含在等待事件范围,而是出现在ash的具体行源中,如下:
标注语句的每次执行大约1小时,如下awr所示:
该sql语句的最后一层Insert如下:
insert into ta_tf l_liquidatebonus, c_managercode, c_liqbatchno) select a.c_tenantid, a.c_tacode, a.c_fundcode, a.c_agencyno, getrldays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20180918, -1 * a.l_tnconfirm) d_requestdate, a.l_tnconfirm, getidays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20180918, a.l_liquidatesub, 1, a.c_ageregion) as l_liquidatesub, getidays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20180918, a.l_liquidateallot - a.l_tnconfirm, 1, a.c_ageregion) as l_liquidateallot, getidays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20180918, a.l_liquidateredeem - a.l_tnconfirm, 1, a.c_ageregion) as l_liquidateredeem, getidays(a.c_tenantid, a.c_fundcode, a.c_agencyno, 20180918, a.l_liquidateend, 1, a.c_ageregion) as l_liquidateend, getidays(a.c_tenantid, a.c_fundcod e, a.c_agencyno, 20180918, a.l_liquidatebonus, 1, a.c_ageregion) as l_liquidatebonus, a.c_managercode, a.c_liqbatchno
每个调用的函数里面又执行了sql语句查询,所以大多这些不存在I/O瓶颈的语句行源都在等待CPU + Wait for CPU,该事件只能说明cpu很忙,至于是否cpu过载要看情况,一般来说逻辑读写不是特别多的话而且cpu整体不忙的话,很大程度上可以认为sql语句应该使用并行执行来加快速度。