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

 手机号登录  找回密码
 注册
楼主: stay_sun

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

[复制链接]
论坛徽章:
0
发表于 2016-6-1 10:15 | 显示全部楼层
冒个泡,book!book!

使用道具 举报

回复
认证徽章
论坛徽章:
249
Jeep
日期:2013-11-08 23:59:45Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-10-08 09:46:02Jeep
日期:2013-09-04 19:17:57Jeep
日期:2013-11-17 09:59:04Jeep
日期:2013-10-08 16:38:27Jeep
日期:2013-11-22 17:15:17Jeep
日期:2013-11-22 14:53:46季节之章:秋
日期:2014-12-26 11:54:29季节之章:冬
日期:2014-12-25 16:20:50
发表于 2016-6-1 11:13 | 显示全部楼层

使用道具 举报

回复
认证徽章
论坛徽章:
39
2014年新春福章
日期:2014-02-18 16:42:02美羊羊
日期:2015-03-18 09:30:06喜羊羊
日期:2015-03-18 09:30:06暖羊羊
日期:2015-03-18 09:30:06嫦娥
日期:2015-06-16 13:56:02秀才
日期:2015-09-14 10:08:302015年中国系统架构师大会纪念徽章
日期:2015-09-14 10:13:48秀才
日期:2015-12-14 14:51:16秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-25 15:31:10
发表于 2016-6-1 14:09 | 显示全部楼层
本帖最后由 xuexiaogang 于 2016-6-13 11:08 编辑

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
答:非常应该,甚至有很多开发最后都转DBA了。很多面向数据库的开发如果不学习数据库,那么开发什么呢?只有了解自己的开发对象才能去做。而且面向数据库的开发主要开发语言可以说都是SQL。这才是最直接和数据库打交道的语言。甚至要学习到数据库的体系结构,知道最起码锁、事务、提交、回滚、一致性读、并发机制。可以不用去处理监听,主从和灾备、集群、但是SQL的写法,正确使用索引,各种函数的使用以及算法都是需要的。有的需求甚至多多种写法,SQL已经成为了一种艺术。而高斯和庞加莱的数字故事,有人用SQL算法来实现,这就是最高的境界了。SQL大赛的冠军哪个不是开发出身?如果学习了数据库,那么很多开发工作是事半功倍的。比如如果知道了如何建立索引,如果争取使用数据库函数,甚至知道物化视图可以解决哪些问题,以及全局临时表的特定场景的使用,都是可以大大简化开发工作的。就以虚拟列一个来说,就能省下很多不必要的代码工作量。

2、在你工作中遇到什么样恶心的sql,吐槽下?
答:有的一句SQL放在QQ中都发不出去,太长了。有的AWR报告也放不下。还有的各种奇葩的编码,怎么用全表扫描怎么做,凡是应该避免的都犯错了。like的时候前后%。一个报表一天一次,一次15个小时,该语句我优化后6秒。还有的SQL半小时一次,但是单次执行都要在半小时以上。还有的SQL不知道是哪个开发做的,但是拿出来给其他开发,大家都吐了。表示怎么看?没法动。即使开发也不愿意去读,都想重写。

3、你觉得当sql 到达设到什么层次的时候,你需要让开发必须改sql?
答:执行时间超过业务要求的周期;不能承受业务并发;无法维护;低级错误;还有极其消耗CPU、内存和IO资源的必须修改,这些不改,整个数据库就没有资源做其他事情了。另外,我听一个朋友说过,他下班时候提出了一些问题,交给开发改。第二天早上发现开发改得热火朝天,他过去打招呼,“哥们,来的挺早啊?”。开发说:“什么啊,一晚上没回去!”

4、大家有没有为了sql跟开发急眼的时候,分享下
答:有过。我说这里要绑定变量。开发说什么叫绑定变量?我说like不能第一位就%,这样等于遍历所有。这时和他说数据库有40亿数据全表扫描是很长时间的。开发说这是用户需求,你别和我说。还有我说这里需要索引,开发问什么是索引?我说这是不对的,这样是不当使用数据库,需要改变。而开发说是数据库不行。
当然有素质的开发或者是虚心学习的还是会改的。还有就是看领导支持程度。有的领导懂技术的,我只要一说,所有开发全部执行,毫无怨言。


使用道具 举报

回复
认证徽章
论坛徽章:
167
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38itpub13周年纪念徽章
日期:2014-10-08 15:21:35ITPUB14周年纪念章
日期:2015-10-26 17:23:44ITPUB15周年纪念
日期:2018-02-09 14:12:58状元
日期:2015-11-19 12:58:23榜眼
日期:2015-11-19 12:58:23探花
日期:2015-11-19 12:58:23进士
日期:2015-11-19 12:59:09
发表于 2016-6-1 15:06 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
不用太深入(此结论绝对是经验之谈),对开发最好的程度是:熟悉数据库对象,SQL基础扎实,真的就很喜人了~~

2、在你工作中遇到什么样恶心的sql,吐槽下?
有些SQL就像堆积木(注意!不是垒。),为了完成业务需求,堆积出语句,完全不管结构和效率!……

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
其实这种情形大多出现在既存的老系统中,新的开发,DBA要做到及早或者适时的切入,早作审核,给运维“减负”。

4、大家有没有为了sql跟开发急眼的时候,分享下。
目前没有,因为DBA要“以技服人”,开发人员都是技术型的,要用技术的思维沟通和交流。

BTW,各位六一快乐!

使用道具 举报

回复
认证徽章
论坛徽章:
167
ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42ITPUB社区12周年站庆徽章
日期:2013-08-13 16:52:38itpub13周年纪念徽章
日期:2014-10-08 15:21:35ITPUB14周年纪念章
日期:2015-10-26 17:23:44ITPUB15周年纪念
日期:2018-02-09 14:12:58状元
日期:2015-11-19 12:58:23榜眼
日期:2015-11-19 12:58:23探花
日期:2015-11-19 12:58:23进士
日期:2015-11-19 12:59:09
发表于 2016-6-1 15:10 | 显示全部楼层
很久没有“大型活动”了,各位都苏醒过来了

使用道具 举报

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

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
对于不同的系统应该有不同的考究吧,我觉得作为一个开发了解到sql语句如何执行时比较高效的,同时对数据库的函数 要有一个全面的
了解,这样可以有效的提高自己的开发效率:举个简单的例子 wmsys.wm_concat();好多人不知道这个函数,一个函数精简了好多代码量。

2、在你工作中遇到什么样恶心的sql,吐槽下?
  一个报表的sql 查询内容太多,逻辑复杂。根本无从下手,结构乱 没有注释。

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
sql的执行效率太低。严重影响用户体验的时候。

4、大家有没有为了sql跟开发急眼的时候,分享下。
DBA不用跟开发急,大家都是为了完成一个项目,重要在于沟通和解决问题。

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-2 08:55 | 显示全部楼层
1983yu 发表于 2016-5-31 17:29
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
深入数据库当然好, ...

而委托服务4无法

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-2 08:56 | 显示全部楼层
1983yu 发表于 2016-5-31 17:29
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
深入数据库当然好, ...

呵呵当然好

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-2 08:57 | 显示全部楼层
hbb239 发表于 2016-5-31 10:26
就说嘛
有奖活动,才有热情。

有奖励,才有奔头

使用道具 举报

回复
论坛徽章:
16
秀才
日期:2015-10-26 09:55:08美羊羊
日期:2015-03-04 14:54:272013年新春福章
日期:2013-02-25 14:51:24知识
日期:2015-07-06 11:21:47秀才
日期:2015-12-21 09:53:46猴赛雷
日期:2016-02-18 09:33:422016猴年福章
日期:2016-02-23 09:58:342015年新春福章
日期:2015-03-06 11:59:472016猴年福章
日期:2016-02-18 09:31:30猴赛雷
日期:2016-02-23 10:04:24
发表于 2016-6-2 09:16 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
是應該!!但個人覺得是不必太深入...但不深入不代表不用。最起碼SQL的規範注意點要做到~~詳細可看"兔大的SQL優化"
(推銷一下...寫得不錯)。畢竟人人有專精...開發者是可以不用太深入的。
2、在你工作中遇到什么样恶心的sql,吐槽下?
前人遺留沒有說明用途也無任何註解又串得落落,這樣也就算了~~重點是效能差User又提需求要改!!
但又說不清楚自己到底要什麼資料....這報表之前到底是怎麼寫的!?
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
效能差。一定是這問題才會反映出來!!即使SQL毫無章法、累贅只要效能不差基本上絕對不會有人覺得怎樣!!
但一旦變得耗能耗時的時候...即使重寫也要改進!!
4、大家有没有为了sql跟开发急眼的时候,分享下。
這倒還好!!因為急也沒用...大家都在同條船上阿!!

使用道具 举报

回复

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

本版积分规则

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