ITPUB论坛-中国最专业的IT技术社区

 找回密码
 注册
楼主: stay_sun

[辩论] 【大话IT】DBA的痛:SQL优化的讨论(获奖名单已公布)

[复制链接]
认证徽章
论坛徽章:
6
2013年新春福章
日期:2013-02-25 14:51:24马上加薪
日期:2015-01-29 10:29:42优秀写手
日期:2014-12-25 06:00:12青年奥林匹克运动会-高尔夫
日期:2014-09-25 21:54:05马上有对象
日期:2015-01-24 21:15:50秀才
日期:2016-12-21 16:55:07
发表于 2016-6-4 21:17 | 显示全部楼层


SQL是开发写的,开发不懂优化SQL,其实也蛮好!

不然 还要DBA干啥

使用道具 举报

回复
招聘 : 系统架构师
认证徽章
论坛徽章:
369
秀才
日期:2015-07-14 09:44:30秀才
日期:2015-08-26 09:00:13金牛座
日期:2015-08-28 09:13:22秀才
日期:2015-09-06 10:19:32秀才
日期:2015-09-06 10:42:32巨蟹座
日期:2015-09-09 14:25:25巨蟹座
日期:2015-09-10 09:03:46秀才
日期:2015-09-11 10:43:06秀才
日期:2015-09-21 09:46:16秀才
日期:2015-08-26 09:00:13
发表于 2016-6-5 09:09 | 显示全部楼层
你得叫开发怎么改才是最好的性能,否则,没法改。

使用道具 举报

回复
论坛徽章:
3
优秀写手
日期:2014-02-20 06:00:12金牛座
日期:2016-01-24 17:24:26秀才
日期:2016-06-24 09:21:04
发表于 2016-6-5 17:32 | 显示全部楼层

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
不用,我自己会就行了。关键不在于他会不会,而在于你自己会不会写sql,很多dba连分析函数都写不来呵呵。他写的垃圾,你就可以优化,领导高兴,你就涨工资
2、在你工作中遇到什么样恶心的sql,吐槽下?
view里写order by。视图套视图
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
执行计划本身没有问题。但是可以通过减少表关联次数时,或者wm_concat改成listagg
4、大家有没有为了sql跟开发急眼的时候,分享下。
没有,他不会我会改啊。运维不会写sql plsql,就是垃圾

使用道具 举报

回复
认证徽章
论坛徽章:
22
2012新春纪念徽章
日期:2012-01-04 11:50:442014年世界杯参赛球队: 厄瓜多尔
日期:2014-06-15 20:40:142014年世界杯参赛球队: 加纳
日期:2014-06-15 20:40:142014年世界杯参赛球队:克罗地亚
日期:2014-06-13 11:15:512014年世界杯参赛球队: 加纳
日期:2014-06-15 20:40:142014年世界杯参赛球队: 比利时
日期:2014-06-15 20:40:14itpub13周年纪念徽章
日期:2014-10-03 10:51:25itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50itpub13周年纪念徽章
日期:2014-10-08 15:16:50
发表于 2016-6-5 21:23 | 显示全部楼层
         

使用道具 举报

回复
认证徽章
论坛徽章:
2
秀才
日期:2016-03-24 09:10:24秀才
日期:2016-03-24 09:20:52
发表于 2016-6-5 21:27 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
     我觉得不能奢望开发深入学习数据库,开发会数据库就是锦上添花。我觉得开发能根据业务需求设计好表结构(当然有开发DBA就不需要了),懂些索引,表连接的原理能懂就好了。
2、在你工作中遇到什么样恶心的sql,吐槽下?
     上千的逻辑读就为了选几条数据,表连接的时候不把条件写好。直接在WHERE里面写,或者取近期数据缺把一年的数据都扫一遍。太多了,根本没办法优化,我是CBO,我也要吐血。
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
     当SQL的逻辑与业务需求相去甚远,实现得太差了,必须要改SQL.例如大量表扫描选部分小数据而且不能走索引的。
4、大家有没有为了sql跟开发急眼的时候,分享下。
     没有。急也没用,只能正面引导。毕竟数据库的东西不是很好懂的。不能奢望他们理解你,开发能对付需求就不错了。

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-6 08:51 | 显示全部楼层

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
     让开发深入学习数据库不太可能,但给他们培训下怎么写出高效的sql这个是很有必要。
2、在你工作中遇到什么样恶心的sql,吐槽下?
     一个查询上千行的代码,但大部分sql是相似,查询的表是相似的,表的列也是相似的。从设计表的时候就出现了问题。
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
     一个功能模块慢,已经影响用户体验了。也完全是sql引起的性能问题,这时候需要改。
4、大家有没有为了sql跟开发急眼的时候,分享下。
     我们技术总监是dba出来的,有问题可以立项,让开发改。

使用道具 举报

回复
认证徽章
论坛徽章:
3
2014年世界杯参赛球队: 瑞士
日期:2014-07-08 08:55:262014年世界杯参赛球队:墨西哥
日期:2014-07-15 11:14:53itpub13周年纪念徽章
日期:2015-05-05 14:25:15
发表于 2016-6-6 09:49 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
答:开发应该基本懂数据库,不要求过深。因为现阶段几乎所有软件产品都离不开后台数据库,你懂“数据库”越多,后期的需要变更的成本越低。这个懂把握在什么尺度呢,我认为起码懂一些SQL的简单优化写法,一些大表分区的常识等。
2、在你工作中遇到什么样恶心的sql,吐槽下?
答:印象最深刻的是单位采购的一款监控软件,里面有一条查监控信息的SQL,一条SQL运行下去,就占系统10%左右的CPU,SQL还不能改,很无解。
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
答:对生产库现阶段或未来预期会造成严重性能影响的,必须改。
4、大家有没有为了sql跟开发急眼的时候,分享下。
答:现阶段没有,在很多企业,运维是后台中的后台,服务部门中的服务部门,没有底气急眼。

使用道具 举报

回复
认证徽章
论坛徽章:
10
秀才
日期:2015-09-11 10:43:062011系统架构师大会纪念章
日期:2015-08-03 13:54:362010系统架构师大会纪念
日期:2015-08-03 13:54:362009架构师大会纪念徽章
日期:2015-08-03 13:54:362014系统架构师大会纪念章
日期:2015-08-03 13:54:362015年中国系统架构师大会纪念徽章
日期:2015-08-03 13:54:362013系统架构师大会纪念章
日期:2015-08-03 13:54:36秀才
日期:2015-07-14 09:44:302012系统架构师大会纪念章
日期:2015-08-03 13:54:36秀才
日期:2015-08-17 13:13:14
发表于 2016-6-6 13:33 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
        在数据库的领域里面,提供的工作岗位还是比较多的,但主要有两大类:一是数据库管理,另一个是数据库的开发。
        我想,这两类工作性质,也就决定了人员在数据库领域里面的划分 及 侧重点。
        数据库管理员,主要从事的应该是偏向技术方面的工作。
           比如:数据库的日常运维、数据安全性(用户、权限等)、数据可用性(高可用) 以及 数据完整性(灾备等)。
        数据库开发人员,主要从事的应该是偏向业务方面的工作。
     比如:数据库模型的设计、对象间的参考关系、编写满足业务需要的SQL语句 等。
     
  其中,编写满足业务需求的SQL语句,是开发人员的事情,最了解本条SQL语句的业务含义的也是开发人员。与DBA尤其是与
  运维DBA没有太大的关系。
  
  SQL的优化,我想主要应从两个层面着手处理:一是物理层面(如数据库的参数调整、表中数据的分布等),
  另一个是逻辑层面(如调整表的设计、调整表的关联等)。这两个方面相互影响。缺少任何一方面的调整,
  一条SQL语句都有可能达不到最佳的运行效率。
  
  每一类数据库管理系统,都有一些区别于其它DBMS的特性。
  作为开发人员,必须对DBMS的特性有充足的理解,才能在写SQL语句时,充分的运用好数据库的功能。
  发挥出数据库的优势。不了解DB2的分区键、Teradata的PI,就很难将表设计好,也就很难写出高效的
  SQL语句。
  
  
2、在你工作中遇到什么样恶心的sql,吐槽下?
        起初,我们在生产上遇到一些问题SQL语句时,还会打个电话通知一下开发人员,让他们自已去看一下,然后,
        根据实际的业务需求,对SQL语句进行适当的调整。但收效较差,基本不改。
        现在,我们直接在生产环境上利用WORKLOAD管理,根据实际的情况,设计了6大类的指标,只要SQL语句触发这些
        指标中的任何一个,就会被KILL掉,让这些问题SQL语句始终得不到想要的结果。这样做了以后,那些问题SQL
        基本都改完了,而且,80%以上,都是开发人员自己改完的。
       
        开发人员的人数是DBA的50倍都不止吧,何必把这些问题SQL语句都揽在DBA的怀里呢。关键是,揽在怀里,有可能
        你也解决不了实际的问题。


3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
        这个层次可能并不是单一的,需要根据数据库的运行负载的实际情况来定。
        有些SQL语句可能占用过多的CPU,比如笛卡尔积,多数是由于开发人员写少了条件 或 参与关联的表中数据重复导致。
        有些SQL语句可能占用过多的临时空间(spool空间等),比如全表扫描、排序、分组。
        有些SQL语句可能造成严重的偏斜(CPU、IO等),比如所处理的全部数据都集中在某一个分区(AMP)或几个分区(AMP)上。
        有些SQL语句可能使用了过多无用的函数转换 等。
       
        其实层次,也就是这些资源的占用指标,可依据生产的实际情况而定。

4、大家有没有为了sql跟开发急眼的时候,分享下。
        大多不需要急眼。
        在开发人员写这条SQL语句时,可能当时确实没有性能问题,系统刚上线,需要处理的数据量也不大,性能问题也没有突显出来。
        当系统正常运行了几年后,业务发展较快,数据量也急增。这个时候,可能性能问题也就突显出来了。
        慢慢调整,好好沟通,问题都是可以解决的。

-------------------------------
上述仅个人观点,供参考。

使用道具 举报

回复
认证徽章
论坛徽章:
0
发表于 2016-6-7 10:04 | 显示全部楼层
求Oracle大神,给我们公司上2天课
QQ:1931545874

使用道具 举报

回复
论坛徽章:
32
优秀写手
日期:2014-07-23 06:00:13秀才
日期:2016-08-05 10:34:04秀才
日期:2016-08-05 10:34:04秀才
日期:2016-08-05 10:28:31秀才
日期:2016-08-05 10:33:40技术图书徽章
日期:2016-08-05 10:29:11秀才
日期:2016-08-05 10:28:57秀才
日期:2016-08-05 10:28:57秀才
日期:2016-08-05 10:28:57秀才
日期:2016-09-27 15:16:21
发表于 2016-6-7 13:34 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
如今这年头不管什么都要全才啊,不需要都精,也要有了解啊,开发不懂数据库肯定不是什么需求都能做好,根据需要吧
如果公司的项目是数据库驱动的项目,大部分技术都是plsql,肯定有必要多学学数据库,不管plsql,sql,数据库结构,sql优化,只要和sql优化相关
有利于快速实现业务,有利于性能的数据库技术都应有所了解,了解的越多才能应对各种问题,关键时候才能快速找到解决之道。
如果公司业务量不大,业务流程复杂更多偏向于代码层面实现复杂业务逻辑,对于数据库用于存储比查询多,那对于数据库的了解相应也不需要太多,
但如今哪不需要db呢,对于开发多了解数据库特别结合项目需求是很有必要的
2、在你工作中遇到什么样恶心的sql,吐槽下?
很多,什么样都有,sql写的很长,重复查询一个表很多次的,乱建索引,没索引的,查一大堆数据,最后再过滤出一条数据的
还是要有一定规范,要有相应人员审查,时间长了不同人写出的sql都不一样,想优化费时费力
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
sql执行计划中显示同一个表扫描次数太多,逻辑不正确,过滤条件使用位置不正确,明显变慢都应及时和开发人员沟通修改sql
4、大家有没有为了sql跟开发急眼的时候,分享下。
你拿出正确,让他的sql运行更快了,让他也学习了,知道怎么写更好,开发人员求之不得啊,开发人员对dba的态度还是比较亲切的,除非dba
让他做的看不到效果,没准还没开人员写的好,开发人员自然也就不买账了。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

DTCC2018购票6.8折优惠进行时

中国数据库技术大会是国内数据库及大数据领域规模最大、最受欢迎的技术交流盛会。 2018年5月10-12日,第九届中国数据库技术大会将如约而至。本届大会以“数领先机•智赢未来”为主题,设定2大主会场及20个技术专场,邀请来自国内外互联网、金融、教育等行业百余位技术专家,共同探讨Oracle、MySQL、NoSQL、大数据等领域的前瞻性热点话题与技术。
----------------------------------------
优惠时间:2018年2月13日前

报名链接>>
TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表