《sql学习 新疆某前台慢的解决方案.doc》由会员分享,可在线阅读,更多相关《sql学习 新疆某前台慢的解决方案.doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 新疆数据库性能诊断分析 梁敬彬背景:新疆结算反映前台操作非常慢,持续近半个月左右了,最近特别慢,通过AWR报表介入分析调查,主要是发现三个问题,提出4点建议如下。其中建议1还没实施,建议2,3,4已经实施,实施完毕后系统有了比较大的提升,局方反映不觉的卡了,后续下周继续观察。一 发现系统存在严重的IO瓶颈 等待事件都是和IO相关的。这个Av Rd(ms) 项表示,平均一次物理读花费的时间(单位为毫秒)有一种说法,AV RD(MS)一般来说,大于7说明系统有严重的IO问题,其中BOSSWG_PERF_DATA居然达到了47,说明当前的存储IO存在瓶颈。建议1: 希望能尽快更换好的存储,改善糟糕
2、的IO能力。此外在接下来的几个图中可以分析到,XJ_CTNBC_DATA_001,INFO_HB_5030090000004, DATA_UPDATE_NOIFY, NE_PERF_MSG_REAL,NE_ALARM_LIST, DATA_MSG_FILELIST这6个物理对象被访问很频繁。 建议2:对涉及到这6个表的代码做检查,另外争取能对这XJ_CTNBC_DATA_001,INFO_HB_5030090000004, DATA_UPDATE_NOIFY, NE_PERF_MSG_REAL,NE_ALARM_LIST, DATA_MSG_FILELIST 这6个表做瘦身。 方法:在不能建分
3、区的情况下,先采delete部分数据,然后alter table XXX move ; 然后再rebuild所有索引的方法来进行瘦身。 这点目前也已基本做完,又有了一定的提升。二 对SQL语句进行优化,对频繁访问对象进行瘦身同时也是CPU排名的前几名如下语句是执行频率超高的语句建议3:重点分析这三段代码(思路为索引和瘦身)b7yp8zh72tjmf begin PKP_XJ_BUSI_MONITOR_UPDATE.UPDATE_XJ_CTNBC_DATA_001_HOUR(101, 104, 106, 108, 109, 110, 112); end; f8wqpy51v6mfy SELECT
4、 COUNT(*) FROM XJ_CTNBC_DATA_001 WHERE BUSI_CLASS = :B3 AND STAT_DATE = :B2 AND SOURCE_ID = :B1 cqpqvrzhntqj5 SELECT TICKET_CNT FROM XJ_CTNBC_DATA_001 WHERE BUSI_CLASS = :B3 AND SOURCE_ID = :B2 AND STAT_DATE = :B1 chrkhspfq9xnu SELECT F.NE_NAME, F.NE_FLAG FROM NET_ELEMENT F WHERE F.NE_ID = :B1 方法:1.
5、 组合索引create index idx_union_xj_ctnbc on XJ_CTNBC_DATA_001 (BUSI_CLASS,STAT_DATE,SOURCE_ID);create index idx_neid_name_flag on net_element (ne_id,ne_name,ne_flag);2. delete 部分数据,然后重组表如下alter table XJ_CTNBC_DATA_001 move;alter index 这个表的索引 rebuild;这些基本已经完成,收效比较明显。三 根据如下发现有RAC争用情况比如同时在两个节点都有更新语句607t3jm
6、h1rjgy (ValveMgmtxjitnmapp2 (TNS V1-V3) )UPDATE NE_PERF_MSG_REAL SET PE_KPI_VALUE = :B14 , PERF_LEVEL = :B13 , MSG_REMARK = :B12 , PERF_BATCH = NVL(:B11 , 0), CONFIG_NE_NAME = :B10 , GENERATE_DATE = TO_DATE(:B9 , yyyyMMddhh24:mi:ss), RECEIVE_DATE = SYSDATE WHERE KPI_ID = :B8 AND NE_ID = :B7 AND CONF
7、IG_NE_ID = :B6 AND REGION_ID = :B5 AND (PERF_ORIGIN = :B4 OR :B4 IS NULL) AND (KPI_DETAIL_CLASS = :B3 OR :B3 IS NULL) AND (PERF_CLASS = :B2 OR :B2 IS NULL) AND DR_ID = :B1 cc4ap62u509p6 (ValveMgmtxjitnmapp2 (TNS V1-V3) )insert into ne_perf_msg (ne_perf_msg_id, kpi_id, ne_id, region_id, config_ne_id,
8、 config_ne_name, pe_kpi_value, perf_origin, perf_level, msg_remark, perf_batch, perf_class, generate_date, receive_date, dispose_date, state, state_date, data_msg_filelist_id, kpi_detail_class, perf_day, dr_id) values(:1 , :2 , :3 , :4 , :5 , :6 , :7 , :8 , :9 , :10 , :11 , :12 , to_date(:13 , yyyymmddhh24miss), sysdate, null, 20, sysdate, 0, :14 , :15 , :16 ) 建议4:ValveMgmtxjitnmapp2 (TNS V1-V3) 和 timeTaskxjitnmapp2这两个后台程序都采用独立在某节点上执行的方式而不是随即分配在两节点的方式。这点已经完成了,把ValveMgmt指定到节点2去执行,把timeTask指定到节点1去完成,局方反映有一点改善了。