ICD数据问题总结培训
李凌志 37090
CONTENTS
重大事故总结
重大事故分类
主要数据库问题
数据库案例
总结
Page
发生局点
问题描述
深圳联通
客服数据库
由于低性能的SQL语句频繁调用,导致数据库重启,业务中一个半小时,
优化SQL后问题才解决
广州联通
客服数据库
由于SQL语句引起两次数据库的IDLE为0,导致工作流、知识库停止使用,
数据库重新启动,业务中断半个小时
福建移动
客服数据库
由于索引未及时创建,导致业务中断半个小时,删除部分历史数据后,
重建索引,问题解决
天津移动
客服数据库
MINFO的关键索引未创建导致,对应的SQL语句非常消耗资源,来话接入很慢,小型机的IDLE为0,创建索引后问题解决
深圳电信
客服数据库
SQL语句索引使用不合理,引起数据库的IDLE长时间为0,座席无法嵌入,业务中断半个小时候
海南移动
客服数据库
人为删除流程调用的一个表,导致存储过程失效,引起业务中断半个小时,重新创建表、恢复数据后问题解决
浙江金华
114系统
人为删除所有存储过程,然后重新加载,导致座席调用的接入失败,导致业务中断5分钟
山西移动
客服数据库
存储过程未及时加载,触发ORACLE的BUG,导致人工业务中断一个半个小时
陕西联通
客服数据库
低性能的SQL语句引起小型机的IDLE长时间为0,导致来话接入非常慢
新疆电信
客服数据库
诸多有问题的SQL语句引起数据库的IDLE长时间为0,通过手工杀数据库的进程,维持系统运行
2006年与数据库相关的事故、重大事故
Page
数据库问题总结
SQL性能问题,是引起重大事故的主要原因
人为操作不规范,也是引起重大事故的原因
ORACLE的BUG,引起业务中断诱发重大事故
Page
数据库性能案例
局点新疆电信
日期 20060614
表现症状
座席接入很慢,数据库的IDLE几乎为0,IOWAIT到达60%。
SQL语句写法有问题
索引使用不合理,使用的效率比较低
对大表、分区表的查询,没有使用到索引
分区表的查询,没有添加分区条件
数据库参数配置不合理
db_block_buffers 的值设置太小。
问题解决情况:通过优化后,使系统的cpu的idle由0左右提升到业务高峰期的40%。
Page
主要有问题的SQL-大表的查询没有使用到索引
SELECT MAX()
FROM MONINFO T
WHERE = :b1 AND PARTID = :b2
问题描述
该语句虽然按分区条件查询,EPTERNO 上创建索引,导致对整个分区扫描
优化方式对该字段创建分区索引,避免对分区扫描
create index epterno on monInfo(ACCEPTERNO)
online nologging tablespace service_hist_idx
Page
主要有问题的SQL-对分区表查询没有使用到分区条件
SELECT COUNT(*) FROM T_AG_RECORDFILE
WHERE SERIALNO = :b1
问题描述: 该表T_AG_RECORDFILE是分区表,数据量非常大,上面的查询,虽然用到了流水号对应的索引,但是没有添加分区条件,导致对每个分区都访问,增加了系统的开销。
优化方式:添加按分区条件查询
SELECT COUNT(*) FROM T_AG_RECORDFILE WHERE SERIALNO = :b1 AND PARTID=substr(:b1,5,4)
Page
主要有问题的SQL-索引创建和使用不合理
SELECT 1 FROM T_WF_SKILLSTAFFAUTH T
WHERE = :b1 AND = :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)
当字段SKILLID单独出现在查询条件中时,可以通过索引2代替索引1,而这两个索引同时存在的时,ORACLE优先使用单个字段的索引,因此索引1是多余的,通过删除字段SKILLID对应的单独索引,使SQL语句使用到复合索引
Page
主要有问题的SQL-使用的索引
数据库有优化案例培训 来自淘豆网m.daumloan.com转载请标明出处.