楼主: stay_sun

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

[复制链接]
论坛徽章:
57
SQL极客
日期:2013-12-09 14:13:35秀才
日期:2016-01-21 13:42:39秀才
日期:2016-01-13 12:14:26SQL大赛参与纪念
日期:2016-01-13 10:32:19SQL数据库编程大师
日期:2016-01-13 10:30:43秀才
日期:2015-12-14 14:47:54秀才
日期:2015-10-19 15:50:392015年新春福章
日期:2015-03-06 11:58:18懒羊羊
日期:2015-03-04 14:52:11优秀写手
日期:2014-11-08 06:00:14
发表于 2016-6-17 20:32 | 显示全部楼层
xgghxkhuang 发表于 2016-6-17 20:13
开发也有了解并尝试使用oracle知识的,有的开发的sql编写技能和调优技术以及架构设计可以和中级dba媲美, ...

这也和国情有关系
对开发来说,如何赚钱是最关心的事情
对于开发来说,最需要了解的依次是
1 业务知识,不懂业务知识你就无法驾驭开发,反之可以让开发人员开发,自己掌控全局,业务第一,技术知识服从业务知识,为业务服务
2沟通协调能力,有些时候开发遇到的各种阻力和系统需求方谈需求,扯皮和关联方的交涉,其闹心程度与压力都不小,要想完成一个系统不全靠技术,有的时候其他因素也不小。
3管理技能,项目掌控技能,给你一些人力资源,你要在时间和钱还有人力有限的情况下做出合格的项目,而且精良,易于长期维护,因为厂商只顾赚钱,而埋下的定时炸弹不鲜见。各种人搞不定,都会找你,还有汇报领导。
4最后才是技术。
你看这其实就是开发上升通道了,利益驱动,要求开发专门设计高可靠的基于db的系统,其实是要求过高了,
越到上面离技术越远,利益驱动。而且技术日新月异,过些年可能技术就变了,贬值过快。这就是最本质的现状。

使用道具 举报

回复
求职 : 软件工程师
论坛徽章:
168
IT宝贝
日期:2011-10-09 15:06:12设计板块每日发贴之星
日期:2011-10-09 15:06:12行业板块每日发贴之星
日期:2011-10-09 15:06:12开发板块每日发贴之星
日期:2011-10-09 15:06:12网络板块每日发贴之星
日期:2011-10-09 15:06:12操作系统板块每日发贴之星
日期:2011-10-09 15:06:12秀才
日期:2017-02-22 15:14:12奥运会纪念徽章:花样游泳
日期:2016-09-09 13:29:43罗罗诺亚·索隆
日期:2016-06-27 09:55:09双子座
日期:2016-03-02 13:54:27
发表于 2016-6-20 09:43 | 显示全部楼层
本帖最后由 voca 于 2016-6-20 09:44 编辑

作为非DBA的开发人员也来说下:
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
个人认为开发懂SQL是必要的, 各种写SQL应该避免的也是必要的,为什么? 你不会让一个新人开发去写SQL,老家伙们,闲着干嘛,就该多学多控制。

2、在你工作中遇到什么样恶心的sql,吐槽下?
最恶心的sql是某些牛人设计了一套所谓的动态表。  只用三四个表来模拟几十个关联表,然后所有实体表要关联就得找这三四个表。
于是,随便抽一些业务数据,10几张表要关联,每关联一次就得多加几个表,各种+,-号,各种冗余

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
sql这玩意,首先得有个规范,明确的表明什么样的就必须改。不要啥都给DBA把关。
DBA嘛,效率太差的,频率太高的,又是深入结合业务的,还是让开发改吧,给予技术支持就好

4、大家有没有为了sql跟开发急眼的时候,分享下。
我作为开发,很希望DBA能多给点意见,但是希望越早越好,频繁一点也好。互相学习下。
但是如果碰到赶工,加班加点,突然来个要求,不改就不能怎么样怎么样,那估计还是得急眼。

使用道具 举报

回复
论坛徽章:
188
红宝石
日期:2014-05-09 08:24:37萤石
日期:2014-01-03 10:25:39奥运会纪念徽章:羽毛球
日期:2008-07-01 10:46:06奥运会纪念徽章:马术
日期:2008-07-07 17:43:24奥运会纪念徽章:射箭
日期:2008-07-25 18:07:39奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-30 10:02:57奥运会纪念徽章:花样游泳
日期:2008-09-26 13:02:43奥运会纪念徽章:排球
日期:2008-12-03 11:23:272010新春纪念徽章
日期:2010-01-04 08:33:082010年世界杯参赛球队:澳大利亚
日期:2010-02-26 11:08:44
发表于 2016-6-21 11:18 | 显示全部楼层
我觉得至少让开发知道绑定 ,合理的绑定.

在谓词使用函数要注意,

开发olap至少知道一点分析函数的知识...

使用道具 举报

回复
认证徽章
论坛徽章:
172
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-21 11:32 | 显示全部楼层
开发团队对新加入的fresher,如果不贯彻本组“做事规范”,对DBA会有二次伤害!
真的。

使用道具 举报

回复
论坛徽章:
9
ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00奥运会纪念徽章:篮球
日期:2012-10-12 15:12:022013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上加薪
日期:2014-05-30 16:34:482015年新春福章
日期:2015-03-04 14:53:162015年新春福章
日期:2015-03-06 11:58:39秀才
日期:2015-09-14 10:08:30
发表于 2016-6-21 21:04 | 显示全部楼层
出了问题再优化,比如某条sql干得nagios告警,cpu占用超过85%。这个时候,你出个优化建议。别人不听,到时候服务器挂了,责任就不是你。
打工别太有责任感。
开发和维护优化类工作本身就是有分歧的,开发追求需求的快速实现,业务部门催得紧呢,而运维优化工作追求的是稳定性。

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-22 11:28 | 显示全部楼层
目前就知道索引优化的飘过。。。

使用道具 举报

回复
论坛徽章:
4
祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-01-04 08:33:082015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31
发表于 2016-6-22 16:01 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
当然应该学些,索引的工作方式,sql的编写规范要了解,遇上过项目表上面10个索引 都是一个字段一个的,做awr报告后发现有些索引是可以合并的,还能提高sql 的执行效率,问开发开发的答复是,这么建肯定能用上索引,查询快。

2、在你工作中遇到什么样恶心的sql,吐槽下?
查询条件里面 不论字符型还是数字型统一都用字符型的变量,not in 后面是大量结果集的

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
为了减少前端的代码复杂程度,在sql里面加上很多 1=1开关的sql

4、大家有没有为了sql跟开发急眼的时候,分享下。
没有,发现有问题及时反应,有领导或者部门做评估,不采纳,可能你的意见理解不够,大家都是工作,没必要。
只有客户无法忍受的时候,并且必须开发修改的,如果自己协调不了就让领导出面了,最不济的在客户在场的情况下跟开发的理论

使用道具 举报

回复
论坛徽章:
0
发表于 2016-6-22 16:21 | 显示全部楼层
   首先一个开发我们先不要求你需要多深入的学习数据库相关知识,但是你至少还是要知道基本的一些sql查询效率吧!如果这个还算是要求比较高的话,那你至少写些标准点的SQL语句吧,不要仅仅只为了实现功能而做功能吧。而且对于做业务数据管理系统的开发更应该多看看数据库相关资料吧。
   吐槽,太多了,给我一天一夜都吐不完。想到刚这个公司的时候,数据库就开发东拼西凑出来的,连字段命名都不规范,一会儿这里是ID,外键又是Code,又没有文档,甚至主外键关系都没有建立,我的天,真的只有神能看明白了。其他各种嵌套子查询,分页竟然用存储过程里面来组装动态SQL执行,看完也是醉了,真不知道还用什么存储过程,直接写给公共方法组装sql去呀,哎,不吐了,影响心情。
   有些开发真的好固执,给他说了他总是感觉自己是对的,他们总是没有问题,遇到这种,难得跟他们急,急完了也不管事,直接跟项目经理沟通解决。大多数开发都还是可以沟通的,而且也很容易接受修改,毕竟大家都可以相互学习,其实主要大家都是想把事情做好,也没有什么矛盾。

使用道具 举报

回复
认证徽章
论坛徽章:
2
喜羊羊
日期:2015-03-04 14:54:422015年新春福章
日期:2015-03-06 11:59:47
发表于 2016-6-22 16:41 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
应该,像一些数据库的一些核心的概念,数据库对象需要有深刻的认识,这样才能写出性能更好的sql
2、在你工作中遇到什么样恶心的sql,吐槽下?
1500行左右的sql算恶心不,看着头痛
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
严重影响数据库性能的时候,其实一开始写sql的时候就应该尽量写出性能优秀的sql
4、大家有没有为了sql跟开发急眼的时候,分享下。
工作中还是以技服人

使用道具 举报

回复
认证徽章
论坛徽章:
187
状元
日期:2016-04-28 14:18:17榜眼
日期:2016-04-28 14:18:17探花
日期:2016-04-28 14:18:17进士
日期:2016-04-28 14:18:17举人
日期:2016-04-28 14:18:17红宝石
日期:2012-04-13 17:18:06蓝锆石
日期:2012-02-20 12:20:11紫水晶
日期:2012-04-19 12:49:17祖母绿
日期:2012-02-27 22:10:14海蓝宝石
日期:2012-02-27 16:58:24
发表于 2016-6-22 18:48 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
   开发必须深入学习数据库。必须达到的层次,以设计合理的数据结构,按照有关的规则和原则,写出严谨规范的SQL语句。

2、在你工作中遇到什么样恶心的sql,吐槽下?
   遇到最恶心的SQL,长度达千行,并被多次修改。整个SQL就像一件百纳衣,被无数个补丁所包围。
   
3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
   1. SQL语句存在严重的性能问题。
   2. SQL语句书写严重不规范。
   3. SQL语句逻辑混乱,很难理解。
   
4、大家有没有为了sql跟开发急眼的时候,分享下。
  曾经跟开发为了SQL急眼。要求开发为了提高性能和逻辑清晰,把一条SQL语句,分成几个段落和函数来完成。

使用道具 举报

回复

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

本版积分规则 发表回复

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