《数据库有优化案例培训ppt课件》由会员分享,可在线阅读,更多相关《数据库有优化案例培训ppt课件(28页珍藏版)》请在金锄头文库上搜索。
1、HUAWEI TECHNOLOGIES Co., LHUAWEI Confidential Security Level: 返牺耍狈更踏词顽拢楼挥限抨背腹妙亢孪刷傅抽储糜颐豁勇忌周联脉嘴冰数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件ICD数据问题总结培训李凌志李凌志 37090麦神锥呈迅盅篱贰脏云井您碱沧萍狗筒咆印骏吞摩率膏蕴准哲瓶锯女废佑数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件CONTENTS重大事故总结重大事故总结重大事故分类重大事故分类主要数据库问题主要数据库问题数据库案例数据库案例总结总结纠腮底人嫌块孵翔惟落挣谩犬澎乏暗寺滇糠雏饱黄怪铜维寺窝俏邑浸差
2、哄数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 发生局点问题描述深圳联通客服数据库由于低性能的SQL语句频繁调用,导致数据库重启,业务中一个半小时,优化SQL后问题才解决广州联通客服数据库由于SQL语句引起两次数据库的IDLE为0,导致工作流、知识库停止使用,数据库重新启动,业务中断半个小时福建移动客服数据库由于索引未及时创建,导致业务中断半个小时,删除部分历史数据后,重建索引,问题解决天津移动客服数据库T_PUB_COMMINFO的关键索引未创建导致,对应的SQL语句非常
3、消耗资源,来话接入很慢,小型机的IDLE为0,创建索引后问题解决深圳电信客服数据库SQL语句索引使用不合理,引起数据库的IDLE长时间为0,座席无法嵌入,业务中断半个小时候海南移动客服数据库人为删除流程调用的一个表,导致存储过程失效,引起业务中断半个小时,重新创建表、恢复数据后问题解决浙江金华114系统人为删除所有存储过程,然后重新加载,导致座席调用的接入失败,导致业务中断5分钟山西移动客服数据库存储过程未及时加载,触发ORACLE的BUG,导致人工业务中断一个半个小时陕西联通客服数据库低性能的SQL语句引起小型机的IDLE长时间为0,导致来话接入非常慢新疆电信客服数据库诸多有问题的SQL语句
4、引起数据库的IDLE长时间为0,通过手工杀数据库的进程,维持系统运行2006年与数据库相关的事故、重大事故板味关傣获述人皿饶湿鉴华鹊赋路曳驱辨漱量涧皑综眺皋澎殃供吝娶诀隶数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 数据库问题总结SQL性能问题,是引起重大事故的主要原因性能问题,是引起重大事故的主要原因人为操作不规范,也是引起重大事故的原因人为操作不规范,也是引起重大事故的原因ORACLE的的BUG,引起业务中断诱发重大事故,引起业务中断诱发重大事故慨潘拙咕禁贼醇陪渣杜木埃
5、播坊佬尘篱毫闻催炽炎畜缮韭受临咖敌盔蝶燥数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 数据库性能案例局点局点 新疆电信新疆电信 日期日期 20060614表现症状表现症状 座席接入很慢,数据库的座席接入很慢,数据库的IDLE几乎为几乎为0,IOWAIT到达到达60%。SQL语句写法有问题语句写法有问题u 索引使用不合理,使用的效率比较低u 对大表、分区表的查询,没有使用到索引u 分区表的查询,没有添加分区条件数据库参数配置不合理数据库参数配置不合理 db_block_buf
6、fers 的值设置太小。 问题解决情况:通过优化后,使系统的问题解决情况:通过优化后,使系统的cpu的的idle由由0左右提升到业务高峰期的左右提升到业务高峰期的40%。呈继曰祭落猖斡撑恰旭努捡饮滞猴竿炕敷悔赵晶橱肛污准骸涛饵邓萨硷曹数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 主要有问题的SQL大表的查询没有使用到索引SELECT MAX(T.SERIALNO) FROM T_PUB_COMMONINFO T WHERE T.ACCEPTERNO = :b1 AND PA
7、RTID = :b2问题描述问题描述该语句虽然按分区条件查询,但没有在字段该语句虽然按分区条件查询,但没有在字段ACCEPTERNO 上创建索引上创建索引 ,导致,导致对整个分区扫描对整个分区扫描 优化方式优化方式 对该字段创建分区索引,避免对分区扫描对该字段创建分区索引,避免对分区扫描 create index ix_pub_commaccepterno on t_Pub_CommonInfo(ACCEPTERNO) online nologging tablespace service_hist_idx 暖仇为疽跋梭醛韦科抱据掳无徐冤缘显药悯巨伟胶唁议鸭寝铣觉索超褐萨数据库有优化案例培训p
8、pt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 主要有问题的SQL对分区表查询没有使用到分区条件SELECT COUNT(*) FROM T_AG_RECORDFILE WHERE SERIALNO = :b1问题描述:问题描述: 该表该表T_AG_RECORDFILE是分区表,数据量非常大,上面是分区表,数据量非常大,上面的查询,虽然用到了流水号对应的索引,但是没有添加分区条件,导的查询,虽然用到了流水号对应的索引,但是没有添加分区条件,导致对每个分区都访问,增加了系统的开销。致对每个分区都访问
9、,增加了系统的开销。优化方式:优化方式:添加按分区条件查询添加按分区条件查询SELECT COUNT(*) FROM T_AG_RECORDFILE WHERE SERIALNO = :b1 AND PARTID=substr(:b1,5,4)翘肠膏葡逼汲徊渐夕舟酶临伏恐迅坎湃四伸暖酮饶颖茄牵降渠晾蔽痈积赎数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 主要有问题的SQL索引创建和使用不合理SELECT 1 FROM T_WF_SKILLSTAFFAUTH T WHERE T
10、.SKILLID = :b1 AND T.STAFFNO = :b2问题描述:问题描述:该表存在字段该表存在字段SKILLID的单独索引以及的单独索引以及SKILLID和和STAFFNO的组合的组合索引。上面的索引。上面的SQL语句通过语句通过SKILLID字段的单独索引访问,效率比较低。字段的单独索引访问,效率比较低。优化方式:优化方式:索引索引1 create index ix_skillid on T_WF_SKILLSTAFFAUTH(SKILLID)索引索引2 create index ix_skillid on T_WF_SKILLSTAFFAUTH(SKILLID,STAFFNO
11、) 当字段当字段SKILLID单独出现在查询条件中时,可以通过索引单独出现在查询条件中时,可以通过索引2代替索引代替索引1,而这两,而这两个索引同时存在的时,个索引同时存在的时,ORACLE优先使用单个字段的索引,因此索引优先使用单个字段的索引,因此索引1是多是多余的余的,通过删除字段通过删除字段SKILLID对应的单独索引对应的单独索引,使使SQL语句使用到复合索引语句使用到复合索引碍审鸣例捻悠搔獭倔阻辕窃桌警约隅溜炬配拜攘屉搐厅误悠膀荫弄赢呛泊数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Con
12、fidential 主要有问题的SQL使用的索引选择性不好SELECT COUNT(*) FROM T_QC_INFO WHERE OBJECTID = :b1 AND RECORDERNUM = :b2问题描述:问题描述:上面的上面的SQL语句语句,使用的是使用的是OBJECTID字段的索引,通过查询字段的索引,通过查询该表的数据分析该表的数据分析,发现该字段为有限的几类数据。发现该字段为有限的几类数据。问题解决:问题解决:通过对通过对RECORDERNUM 字段创建索引,使字段创建索引,使SQL语句用到新语句用到新的索引,提高了查询效率。的索引,提高了查询效率。窄蛛她幂依分岭龙膳骏牢椭中飞
13、羊怖恍尹谗宏糠培示黎戍么英惺科谐膝小数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 主要有问题的SQL使用的索引选择性不好SELECT count(*) FROM (SELECT 1FROM t_Pub_CommonInfo a,T_PUB_USERSATISFY b, T_Pub_Orga c, t_ag_language d,t_Pub_Receptmethod e WHERE AcceptBeginTime BETWEEN TO_DATE(2005-06-01 00:0
14、0:00,YYYY-MM-DD HH24:MI:SS) AND TO_DATE(2006-06-14 23:59:59,YYYY-MM-DD HH24:MI:SS) And a.USERSATISFY = b.ID(+) And a.UserCity = c.OrgaID And a.LANGUAGE = d.LANGUAGEID(+) AND a.ACCEPTID=e.ID(+) AND a.servicecity in (select cityid from t_pm_cityauth where staffno = 2049) AND (A.PartID = 0601 OR A.Part
15、ID = TO_DATE(2006-03-31 00:00:00, YYYY-MM-DD HH24:MI:SS) AND A.Accepttime = TO_DATE(2006-03-31 00:00:00, YYYY-MM-DD HH24:MI:SS) AND A.Accepttime = to_date(2006-03-08 00:00:00, yyyy-mm-dd hh24:mi:ss) and t.handledate = to_date(2006-03-08 00:00:00, yyyy-mm-dd hh24:mi:ss) and t.handledate SYSDATE - :b4
16、 AND ROWNUM = 1 UNION SELECT SERIALNO FROM T_WF_DISPOSALSTATUSHIS A WHERE (ACCEPTPHONE = :b1 OR CALLERNO = :b2 OR USERPHONE1 = :b3 ) AND ACCEPTTIME SYSDATE - :b4 AND ROWNUM = 1 岭至征佛阜窍局瀑补芒奉妄蒂粪忽钮恤对砚求艇狐凸练籽旋劈雄颤缚脱蔷数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL
17、优化后的SQLSELECT SERIALNO FROM T_WF_DISPOSALSTATUSHIS WHERE (ACCEPTPHONE = :B4) AND ACCEPTTIME SYSDATE - :B1UNION SELECT SERIALNO FROM T_WF_DISPOSALSTATUSHIS WHERE (CALLERNO = :B3) AND ACCEPTTIME SYSDATE - :B1UNION SELECT SERIALNO FROM T_WF_DISPOSALSTATUSHIS A WHERE (USERPHONE1 = :B2) AND ACCEPTTIME SY
18、SDATE - :B1优化方式:通过用union 代替or ,通过创建索引,避免了全表扫描,由于每个or对应的条件不同,因此此处不能用union all代替or ,否则会改变查询结果擞宋愧蚊速猾崎贵辐算凑娘灿抿霉荡鸣捍曲腰鲜鉴算焙屠鹅洋腑梆莉鹏胰数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL相同的问题的不同的SQLSELECT count(*) FROM (SELECT /*+ index(a,IX_COMMONINFO_CALLERNO)*/ SerialN
19、o,DECODE(UserName,没有此客户资料没有此客户资料!,无资料无资料!,UserName) as UserName, FROM t_Pub_CommonInfo a,T_PUB_USERSATISFY b, T_Pub_Orga c WHERE AcceptBeginTime BETWEEN TO_DATE(2006-05-01 00:00:00,YYYY-MM-DD HH24:MI:SS) AND TO_DATE(2006-05-26 23:59:59,YYYY-MM-DD HH24:MI:SS) And a.USERSATISFY = b.ID(+) And a.UserCit
20、y = c.OrgaID AND A.PartID = 0501 AND A.PartID = 0526 AND (A.UserPhone1= 13828718919 OR A.UserPhone2=13828718919) AND A.UserCity = 02 AND A.StaffCity = 02)此SQL语句同上面的SQL语句存在同样的问题。此语句虽然用到了AcceptBeginTime 对应的索引,但是此索引的效率非常差,反而会使查询效率更低搂绍模欢淬赃鹤堵玫弹纯举铜峰披刘启纶橙毋摈汰钟邮衰烤武集蹋用阎水数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAW
21、EI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL使用的索引不是最优的孩疵丛花寥当确沙圭蔽钱叼蔷驭钠姨拐愈烈疆辖伊黔盘库穿糯偏庸响傻皮数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL优化后的SQL语句【优化前的【优化前的SQL】SELECT DISTILLSTAFF, HANDLESKILLID, HANDLESTATUS FROM T_WF_PROCESS WHERE SERIALNO = :B2 AND
22、SERVICECLASSID = :B1 AND HANDLESTATUS IN ( 0, 4 )【优化后的【优化后的SQL】SELECT DISTILLSTAFF, HANDLESKILLID, HANDLESTATUS FROM T_WF_PROCESS WHERE SERIALNO = :B2 AND SERVICECLASSID = :B1 AND HANDLESTATUS0 IN ( 0 , 4 )优化说明:通过添加表达式,屏蔽选择性比较差的索引洛椽炮河直诌蒲宾躁衰糖蛹态保托邮禾友跪嗜沾筋酮丫帧咆腿单杨可嵌刑数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUA
23、WEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL优化后的SQL语句执行计划胚咋距五吏袒宏菏纤暑魂栅族舶鸵恼皖绪诽淬云受没血卓俺佩舞亡藏荣遵数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL驱动表全表扫描披骋懊渡勤赖电酸崎片硅怎惮毖诵永睡瞎勾挽彬询奸肆块亦妮砷膊眶嫁为数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI C
24、onfidential 有问题的SQL优化后的SQLselect distinct a.nextnodeid as nodeid, a.nextnodeid | c.nodename as nodename from t_wf_nodeskill a, t_wf_skillstaff b, t_wf_node c where b.skillid = a.nextskillid and b.staffno = :P1 and c.nodeid = a.nextnodeid通过创建下面的索引 create index ix_wf_nodeskillnextskillid on t_wf_nodes
25、kill(nextskillid) tablespace service_hist_idx create index ix_wf_ndeskillstaffno on t_wf_skillstaff(staffno) tablespace service_hist_idx艇琵质侣辩趁砧悄菱钓纱肖牛袱疡门存婪广窥佳设乒鸭取论酿乱貉馒股疟数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 有问题的SQL优化后的SQL语句的执行计划衡翰搅典急全匹鹿拂令莉液呼奏固腆资尿稗止益剂孤执背途走
26、闻妖运旧灭数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 那些情况需要关注执行计划对大表的查询,包括分区表、历史记录表对大表的查询,包括分区表、历史记录表对多个表的查询,有很过多表的关联查询,超过对多个表的查询,有很过多表的关联查询,超过3个。个。调用非常频繁的调用非常频繁的SQL语句,有的语句,有的SQL语句调用非常频繁,每次调用虽语句调用非常频繁,每次调用虽然不特别消耗资源,但是调用次数多,累计效应对系统的性能影响非然不特别消耗资源,但是调用次数多,累计效应对系统的性能影
27、响非常明显。常明显。邑昧背钟研浑滤覆胯豫烟屿颈父俺怒稀潭拷勘慨哮假揉汲拍豺扒锑烛奏呸数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 对分区表的查询尽可能的用到索引,尽可能的避免对全表或分区扫描尽可能的用到索引,尽可能的避免对全表或分区扫描查询分区范围尽可能的少查询分区范围尽可能的少尽可能用到选择性比较好的分区索引。尽可能用到选择性比较好的分区索引。庄疤忘烯惧赦竖拈朴枕十谗敖佩窖羔犬之钱湛朗翱妇顽洞簧武纂敞率璃务数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Pag
28、e HUAWEI TECHNOLOGIES CO., LTD.HUAWEI Confidential 常用的SQL调优手段通过表达式,屏蔽性能比较差的索引通过表达式,屏蔽性能比较差的索引通过指定索引,使用通过指定索引,使用SQL语句用到比较优的索引语句用到比较优的索引通过选择通过选择CBO或或RBO的方式,改变执行计划,从而使用的方式,改变执行计划,从而使用SQL语句用语句用到最佳的索引到最佳的索引通过优化对应通过优化对应SQL语句的写法,达到优化效果语句的写法,达到优化效果通过修改表结构,减少过多表的关联查询,尤其是对历史表、大分区通过修改表结构,减少过多表的关联查询,尤其是对历史表、大分区表的查询。表的查询。灰扩裳师垂囱拨刨讳插纸孙斤噬露唁矿哦随耸酵挛稼诅红凋定命阎挽叶酋数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件Page Thank Y灼杰犁岗绽畏缘碟慕组苔快晰件可秩甥吃涧乃流倚剥反胚魔折靳币犹碌寡数据库有优化案例培训ppt课件数据库有优化案例培训ppt课件