- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈SQL审核规则
Haixiong.luo@
罗海雄
关于我
罗海雄(网名Rollingpig)
云和恩墨 性能优化总监
2012 ITPUB全国SQL大赛冠军得主,资深的架构师和性能优化专家。曾经服务于甲骨文公司亚太区开发者计划部门和大型制造企业中芯国际,从开发到性能管理,有超过10年的企业级系统设计和优化经验。
SQL审核最重要的是什么?
持续进步的SQL审核方案
不断进步的开发团队、自动高效的SQL审核工具把关以及线上系统SQL代码的持续改进 这三个维度的螺旋推进。
云和恩墨自主研发工具:
Z3
Z3是什么?
Z3的特点
自动化收集与分析
丰富规则分析
可量化的评分机制
最重要的是规则 – 丰富规则
优化大师日常积累
盖国强
杨廷琨
熊军
罗海雄
怀晓明
张中靖
…
行业客户的优化经验
通讯行业
金融行业
保险
银行
互联网金融
制造业
互联网
…
全方位覆盖
SQL语句
执行计划
表
索引
序列
…
最重要的是规则 – 灵活规则
模板化管理
OLTP
OLAP
生产
测试
开发
…
可调参数
表大小
绑定变量个数
统计信息时间
…
可调分值
区分严重程度
区分关注程度
自定义规则
预留接口
无需发布新版本
反应迅速
规则
关于规则的案例分享
案例#1
When Where
2016/01/01
某保险客户开门红
发生了什么?
高并发下,用户系统
突然运行缓慢。
案例#1
处理过程
检查系统CPU内存 –正常
检查session, 大量等待在 row cache lock
案例#1
处理过程
检查当前SQL, 发现为sequence
人肉规则引擎启动…….
Sequence主要问题集中在cache 和 order选项
案例#1
处理过程
果然是cache=0搞的鬼
迅速改为cache=100
系统恢复正常
规则提炼:sequence中cache=0或者cache n(可配置值)
案例#2
Where
某知名院线
发生了什么?
目前正常,但担心过年期间高并发导致系统问题。
案例#2
检查系统压力
高峰CPU 25%
内存充足
I/O 极佳
Top SQL?
案例#2
检查系统压力
高峰CPU 25%
内存充足
I/O 极佳
Top SQL?
案例#2
SQL执行信息
案例#2
SQL文本,很复杂
SELECT T.SHOW_PK SID, TF.FILM_ID FILMID, F.PHO_FILM_ID PHOFILMID, F.FILM_CODE UNICODE, F.THROUGH_FLAG THROUGHFLAG, TF.FILM_NAME FILMNAME, T.HALL_PK HALLPK, T.HALL_ID HALLID, T.HALL_NAME HALLNAME, NVL((SELECT AH.APP_SHORT_NAME FROM APP_CINEMA_HALL_NAME AH WHERE AH.HALL_NAME=H.HALL_NAME), H.HALL_NAME) APPSHORTNAME, T.CAPACITY HALLCAPACITY, T.VIP_FLAG VIPFLAG, T.PHO_CINEMA_ID CINEMAID, T.SHOW_DATE SHOWDATE, T.SHOW_TIME SHOWTIME, TF.DERATION DURATION, F.LANG LANGUAGE, T.SEQ_NO SEQNO, F.CARRIER CARRIER, F.CARRIER || F.DIMENSIONAL DIMEN, T.CAPACITY SEATCNT, NULL AVAILABLESEATCNT, DECODE(UPPER(T.AVAILCHANNEL), Y, DECODE(UPPER(T.VIP_FLAG), Y, 0, 1), 0) AVAILABLECHANNEL, NVL(H.SERVICE_CHARGE, 0) * 100 SERVICEPRICE, TO_NUMBER(T.MARKET_PRICE) * 100 PRICE, TO_NUMBER(tw.price) * 100 SHOWGUIDEPRICE, TO_NUMBER(T.MARKET_PRICE) * 100 SHOWMARKETPRICE, TO_NUMBER(f.market_price)*100 FILMMARKETPRICE, TO_NUMBER(nvl((select distinct p.price from wandafilm.tbm_pho_show_p rice_w p where p.ticket_id = 成人票 and p.show_pk
文档评论(0)