楼主: stay_sun

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

[复制链接]
论坛徽章:
0
发表于 2016-6-12 17:43 | 显示全部楼层
有活动,积极参加。

使用道具 举报

回复
论坛徽章:
5
优秀写手
日期:2014-03-26 05:59:56马上有钱
日期:2014-10-30 16:45:50白羊座
日期:2015-11-10 11:35:01秀才
日期:2015-12-25 15:31:10秀才
日期:2016-01-25 15:02:04
发表于 2016-6-13 09:21 | 显示全部楼层
本帖最后由 WY24420 于 2016-6-13 09:24 编辑

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
结论:开发人员能够熟练使用SQL就够了,没必要深入
原因:深入谈何容易?那是不是DBA也应该深入学习应用程序的开发语言,很多时候开发人员不是不深入,而是没有那个精力,还有兴趣问题
更多的是,个别开发人员认为自己“深入”了,动不动就跟DBA指导江山,动不动就说执行计划,索引扫描,
不是不想跟他聊这些,只是知道个皮毛,又觉得自己很深入了,聊下去就没意思了。这种情况也是比较头疼的。

2、在你工作中遇到什么样恶心的sql,吐槽下?

1,几千行的存储过程(我没有说几千行很牛逼或者怎样样,技术上10行代码跟1000行是没有区别的,)没有任何备注,没有任何格式化,一坨一坨的,而且上面的逻辑一层叠一层,SQL不写任何别名,都不知道哪个字段是哪个表的
2,有时候写了一大堆逻辑,又是循环又是变量,临时表,原来就是实现这么个逻辑,你这么***一句代码不就完了



3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?

1,自己的SQL可以很慢,而且很耗资源,但是是定时任务,又没人关心他的效率,以至于足以拖慢整个DB服务器的运行
2,乱,乱,乱,毫无头绪的存储过程,整体思路就不对,但是拼命地往里面加逻辑,最后也能跌跌撞撞地跑出结果来



4、大家有没有为了sql跟开发急眼的时候,分享下。

除了极个那种资格很老的又有点固执己见的人,说,我就是觉得SQL这么写运行的快,你跟他拿数据说话,他跟你耍赖,说已经上线了,怎么怎么滴,其实人人都有这种对不熟悉事务的抗拒心理,这才是专业化的价值,他就把他的程序写好,数据库这一块就有DBA来负责了
其他的都还好

使用道具 举报

回复
认证徽章
论坛徽章:
40
2014年新春福章
日期:2014-02-18 16:42:02秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 14:51:162015年中国系统架构师大会纪念徽章
日期:2015-09-16 12:54:392014系统架构师大会纪念章
日期:2015-09-16 12:54:392013系统架构师大会纪念章
日期:2015-09-16 12:54:392012系统架构师大会纪念章
日期:2015-09-16 12:54:392011系统架构师大会纪念章
日期:2015-09-16 12:54:392010系统架构师大会纪念
日期:2015-09-16 12:54:39秀才
日期:2015-12-25 15:31:10
发表于 2016-6-13 11:04 | 显示全部楼层
Cici_Liu888 发表于 2016-6-7 10:04
求Oracle大神,给我们公司上2天课
QQ:1931545874

不敢说是大神,但是可以讲课。不知道要什么方面的?

使用道具 举报

回复
论坛徽章:
7
优秀写手
日期:2013-12-18 09:29:08问答徽章
日期:2014-02-07 23:48:392014年新春福章
日期:2014-02-18 16:50:09马上有车
日期:2014-02-18 16:50:09马上有钱
日期:2014-10-26 21:51:11暖羊羊
日期:2015-03-04 14:54:572015年新春福章
日期:2015-03-06 11:59:47
发表于 2016-6-13 23:47 | 显示全部楼层

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
     是的,至少会看执行计划,基本的优化手段还是得会。自己的代码慢慢在哪里,为什么会慢,至少要能找到大概原因

2、在你工作中遇到什么样恶心的sql,吐槽下?
     一个兄弟在ETL的代码里加了/*+ PARALLEL(512)*/机器还真开了并行。。。。。

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
     是否会影响到其他模块,是否影响到当前模块用户体验,资源占用太高

4、大家有没有为了sql跟开发急眼的时候,分享下。
     他不为难我,我就不为难他。呵呵。。。。工作嘛

使用道具 举报

回复
求职 : 数据库开发
认证徽章
论坛徽章:
41
2017金鸡报晓
日期:2017-02-08 14:09:13秀才
日期:2016-01-13 12:14:26秀才
日期:2016-01-12 11:23:27金牛座
日期:2016-01-03 20:58:56秀才
日期:2015-12-21 09:53:46秀才
日期:2015-12-21 09:48:11秀才
日期:2015-12-18 09:28:57秀才
日期:2015-12-14 15:02:13秀才
日期:2015-11-23 09:48:22秀才
日期:2016-01-21 13:37:04
发表于 2016-6-15 11:34 | 显示全部楼层
懂一点的人 和他们交流 容易上火

使用道具 举报

回复
论坛徽章:
3
2011新春纪念徽章
日期:2011-01-04 10:37:34ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41秀才
日期:2016-02-18 10:08:14
发表于 2016-6-15 15:47 | 显示全部楼层
本帖最后由 ninipig 于 2016-6-16 08:27 编辑

1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
现在四个月快餐式培训出来的JAVA开发人员,弄出来的SQL语句基本上都是使用框架生成的吧,如Hibernate和ibatis。点点鼠标就能生成一条SQL了。
只有很少的应用公司会有自己的SQL开发职位,专门开发SQL和PLSQL的,如亚信,他们开发的BOSS系统就是自己手写SQL的。
开发使用的数据库,绝大多数都是的DML操作,用得最多的是增,删,改,查这四个功能,他们基本上都不会懂什么分析函数和开窗函数的。
我不久前还和浪潮的项目经理讨论过,为什么开发只会最基础的SQL,高级SQL都不会?
他说了,即然小学文化就能讨口饭吃,为什么还要费力的学高中知识呢,钱又不会多一分,小学的够用就行了
我觉得开发人员能学会使用执行计划这个最好,简单一点的能看得懂COST的消耗,有没有全表扫描,有没有使用到索引之类的,
当然会点SQL高级函数更好了,很多问题SQL都是简单SQL的堆积,一条高级函数就能搞定的语句,非要使用UNION ALL的拼接起来搞.
如果是公司的DBA人员,我觉得有必要给这些快餐开发人员进行一点简单的SQL培训,这样自己以后在公司里也能省不少事情.



2、在你工作中遇到什么样恶心的sql,吐槽下?
我现在运维的浪潮的综合代维应用,特别恶心,超大段的SQL,有4万多个字符,里面都是调用一个视图,然后这个视图里又调用了其他N个视图,视图之间互相嵌套视图,不懂他们的业务逻辑,整整四屏的SQL代码,直接就把我惊呆,现在水平不够,实在无法修改。
还遇到过一次,一条特别奇葩的SQL,把数据库的表给锁住了,导致应用无法增加和修改,中断了4小时才好,这次故障正好赶上我请休假不在现场,公司同事重启了RAC的一个节点,没解决,最后扣了我1000块工资,我也是无语了.
select INT_ID,ZH_LABEL,RELATED_BRANCH,RELATED_SYSTEM from RES_DIRE_BURY_SEG where stateflag=0 and int_id in (2608410,2608411,2608412。…….) or init_id in (..........) or init_id in (............)
整整300多页的sql文本,后面一大堆的 or init_id in(一大堆数字列表)select INT_ID,ZH_LABEL,RELATED_BRANCH,RELATED_SYSTEM from RES_DIRE_BURY_SEG where stateflag=0 and int_id in (2608410,2608411,2608412,2608413,2608414,2608415,2608416,2608447,2608466,2607005,2607006,2607007,2607008,2607010,2607011,2607012,2607013,2607014,2607036,2607037,2607038,2607039,2607040,2607041,2607042,2607043,2607044,2607051,2607052,2607054,2606943,2606944,2606949,2606950,2606951,2606952,73721815,73721817,73721821,73721823,73721825,73721829,73721831,73721833,73721837,73721841,73721871,73721891,73721898,73722018,73722020,73722027,73722032,73722035,73722040,73722049,73722052,73722056,73722058,73722069,73722077,73714739,73714753,73714758,73714760,73714762,73714793,73714802,73714810,73714815,73714817,73714819,73714902,73714904,73714941,73715026,73715031,73715036,73715038,73715040,73715042,73715064,73715072,73715077,73715082,73715088,73715090,73715093,73715096,73715112,73715114,73715118,73715120,73715122,73715137,73715585,73715589,73715593,73715612,73715620,73715623,73715625,73715627,2617184,2617185,2617186,2617188,2617189,2617190,2617191,2617193,2617194,2617196,2614015,2611960,2611961,2611962,2611963,2611964,2611966,2611968,2611969,2611970,2608141,2633818,2608147,2606774,2606775,2606776,2606777,2606778,2606779,2606780,2606781,2606783,2606785,2606787,2606788,2606790,2606791,2606792,2607196,2610536,2610537,2610539,2611825,2611826,2633819,2608150,2608153,2608156,2608157,2608159,2608160,2633820,2608191,2633827,2607340,2607343,2607357,2633828,2607364,2633829,2607383,2607399,2607401,2608361,2608362,2608363,2608404,2608406,2608407,2608409,73718271,73718275,73718277,73718279,73721758,73721766,73721768,73721772,73721774,73721779,73721781,73721783,73721785,73721787,73721793,73721795,73721799,73721803,73721805,73721807,73721809,73721813,2612043,2612049,2612052,2612053,2612055,2612060,2610038,2610041,2610044,2610046,2610048,2610049,2610050,2610051,2610052,2610053,2610054,2610055,2610226,2610305,2610308,2610313,2606843,2606848,2606853,2608279,2608280,2608282,2608283,2608284,2608288,2608290,2608291,2608293,2608298,2608299,2608300,2608313,2608316,2608318,2608359,2611910,2611913,2611931,2611939,2611944,2611945,2625300,2625319,2625325,2625334,2625480,2625481,2625482,2625778,2625780,2625783,2625786,2625787,2625790,2629667,2629666,2629920,2629921,2629922,2629923,2629924,2629926,2624612,2624633,2624691,2631121,2631122,2631123,2631124,2631128,2631132,2631133,2631135,2631136,2631140,2631141,2631145,2631151,2631153,2631209,2631216,2631222,2631226,2631229,2631241,2631243,2631684,2630315,2630323,2630335,2630337,2630340,2630342,2630344,2630350,2630352,2630354,2630355,2630359,2630366,2630371,2630388,2630390,2630394,2630403,2630406,2630421,2611946,2611947,2611948,2611949,2611952,2611953,2611954,2611955,2611956,2611957,2630243,2630244,2630245,2630246,2630248,2630249,2630250,2630251,2630252,2630253,2630254,2630255,2630256,2606953,2606954,2607711,2607766,2607771,2607776,2607790,2607797,2607811,2607276,2607287,2606784,2606789,2606808,2606816,2606821,2606805,2608599,2608600,2608675,2608680,2608770,2608775,2608701,2608854,2608863,2609026,2609131,2610029,2606761,2606762,2606764,2606765,2606766,2606768,2606769,2606770,2606771,2606772,2606773,73718119,73718123,73718125,73718127,73718129,73718133,73718135,73718137,73718139,73718145,73718147,73718149,73718151,73718154,73718158,73715351,73715353,73715355,73715449,73715456,73715461,73715465,2343069,2343273,2343285,2343554,2343555,2343556,2343557,2343558,2343559,2343560,2343561,2343562,2343563,2343564,2343565,2343566,2343567,2343568,2343570,2343571,2343572,2343573,2343574,2343575,2600851,2600860,2618394,2618395,2618396,2618397,2618410,2617163,2617164,2617165,2617166,2617167,2617168,2617169,2617170,2617171,2617173,2617174,2617175,2617177,2617178,2617180,2617182,2617183,2614017,2614018,2614021,2614023,2614025,2614028,2614029,2614031,2614033,2614034,2614036,2614571,2614572,2614573,2614053,2614057,2614062,2614070,2614073,2614083,2614574,2614544,2614549,73718164,73718166,73718168,73718170,73718175,73718177,73718186,73718188,73718195,73718199,73718251,73718253,73718257,73718259,73718261,73718263,73718268,2644721,2644722,2644725,2644726,2653368,2648463,2648464,2648465,2648466,2648467,2648468,2648469,2648470,2648471,2648472,2648473,2648474,2648475,2648433,2643446,2643450,2630440,2627602,2627603,2627605,2627606,2627607,2627608,2627609,2627610,2627611,2627612,2627613,2627614,2627615,2627616,2627617,2627618,2627619,2627621,2627622,2627624,2627625,2630219,2630220,2630221,2630222,2630223,2630224,2630225,2630226,2630227,2630231,2630232,2630233,2630234,2630235,2624555,2627177,2627178,2627179,2627182,2627183,2627184,2627185,2627187,2627189,2627194,2627199,2627205,2627212,2627217,2627220,2627232,2627236,2627242,2627255,2627302,2627303,2627320,2627328,2627335,2627339,2627358,2628513,2628746,2628749,2628750,2628751,2628758,2628815,2628816,2628817,2628819,2628821,2628823,2628825,2628827,2628829,2628831,2628837,2629488,2629491,2629492,2629494,2630827,2630828,2630829,2630830,2630833,2630964,2630965,2630966,2630967,2630968,2630969,2630970,2645387,2631117,2631119,2631120,2630238,2630239,2630240,2630242,2644209,2645688,2645689,2645690,2627626,2627627,2627628,2624703,2630097,2630781,2630782,2630784,2631184,2630790,2630791,2631185,2631188,2630795,2630797,2630798,2630799,2630800,2630803,2630806,2630807,2630808,2631172,2631246,2631252,2631258,2631264,2631268,2631274,2631278,2631286,2631293,2631301,2631311,2631340,2631341,2631388,2631449,2631450,2631454,2631474,2631523,2631549,2631577,2631628,2631641,2630446,2630450,2630453,2630460,2631164,2631170,2630762,2630763,2630766,2630769,2630770,2630773,2630776,2630777,2630820,2629989,2630824,2630035,2630037,2630038,2610577,2629840,2630213,2630217,2630218,2630257,2630258,2630261,2630266,2630272,2630282,2630288,2630292,2630303,2627394,2627397,2627399,2627402,2627403,2627405,2627407,2627409,2627412,2627413,2627414,2627417,2627419,2627587,2627588,2627589,2627590,2627591,2627592,2627594,2627595,2627596,2627597,2627598,2627599,2627600,2627601,2630778,2621724,2621725,2623853,2623854,2625273,2611827,2611828,2611829,2611830,2611831,2611832,2611834,2611838,2611840,2611847,2611851,2611855,2611857,2611868,2611871,2611876,2611881,2611885,2611886,2611934,2611950,2611902,2611906,2609068,2609061,2609066,2610700,2610705,2612039,2643417,2643420,2643422,2643430,2643432,2645703,2644713,2644714,2644715,2644717,2644718,2644719,2644720,2642845,2642848,2642849,2642850,2642853,2642854,2642855,2642856,2642857,2642858,2642859,2642860,2642861,2642862,2642863,2642864,2642865,2642866,2642867,2642869,2642872,2642878,2642885,2642890,2644576,2644577,2644578,2644581,2644712,2653863,2653864,2653873,2653874,2653875,2653877,2653878,2653879,2653880,2653882,2647785,2647787,2647788,2647789,2647790,2647791,2647793,2647795,2647797,2647798,2647799,2647800,2643452,2643456,2643459,2643462,2643463,2643467,2643472,2643508,2643516,2643526,2643533,2643538,2642891,2642904,2642909,2643112,2643173,2643234,2643236,2646102,2646112,2646114,2646117,2646120,2646128,2646130,2646134,2646137,2647194,2648015,2648016,2648476,2648477,2648478,2648479,2648480,2648481,2648482,2647574,2647575,2647576,2647577,2648298,2647578,2645493,2645494,2645496,2645497,2645704,2645977,2646347,2646348,2646349,2648681,2648682,2648684,2648685,2648687,2648690,2648691,2648694,2648695,2648698,2648700,2648701,2648703,2648704,2644208,2644087,2644088,2644092,2644100,2644105,2644119,2644123,2644126,2653889,2646357,2646358,2646359,2646360,2646362,2646363,2646364,2646366,2646367,2646368,2646369,2646370,2646371,2646372,2646373,2646374,2646375,2646376,2646377,2646378,2646379,2647118,2647121,2647124,2647127,2644838,2644846,2644871,2644899,2644902,2644908,2644915,2644918,2645691,2645692,2645693,2645694,2645695,2645696,2645697,2645699,2645700,2645701,2645702,2653264,2658010,2643002,2643011,2643016,2643021,2658012,2658013,2643027,2658014,2643041,2658016,2643052,2643056,2643058,2643070,2643083,2643095,2643405,2643408,2643413,2645389,2645396,2645400,2645447,2645448,2645449,2645450,2645451,2645452,2645454,2645455,2645456,2645457,2645458,2645459,2645460,2643153,2643163,2643613,2653265,2653308,2653613,2653615,2653616,2653617,2653618,2658018,2658019,2658020,2648390,2648392,2648395,2648396,2648397,2648398,2648399,2658021,2648402,2648403,2648406,2648410,2648414)  or int_id in (2648442,2648452,2648455,2648457,2648458,2648460,2648461,2648462,2642487,2642488,



3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?
Wait等待时间非常高,COST消耗非常高,超级长的N多层嵌套的SQL,达到其中之一条件的,就需要把代码从AWR报告里抓出来提交给开发了。
我现在运维的很多系统,都是由于SQL写得太烂,跑的都是大长段大长段的SQL代码,消耗了过多的CPU资源,导致系统变慢,变卡的问题很多了。
很多时候写法有问题的SQL,也会触发oracle出现ora-600和core dump的情况,可以把这些问题SQL从trace文件里找出来,必须改掉,改了以后,就不再出现类似报错的问题了。



4、大家有没有为了sql跟开发急眼的时候,分享下。
由于服务的是电信客户,客户他们要求每周至少对现有应用系统提出2条SQL优化的建议,于是每周提交给电信客户的周报就需要写两篇关于SQL优化的WORD文档。
发送客户的同时抄送给应用厂商,很多时候厂家都不改SQL代码,简单回一句,已经修改完事。
后面又发生系统缓慢的问题,抓出AWR报告一看,原来的SQL还是没有改,导致CPU和内存占用非常高,客户一问责,就是我来和应用厂商互掐了。
很多时候都是在和厂家的项目经理在扯皮,报告里看到硬解析非常高,占了整个解析的3分之1了,把有问题的SQL抓出来,让他们把where子句后面的列改成绑定变量,
他们经理说他们没办法改,让我帮他们修改cursor_sharing参数,这一改不就会有很多SQL的执行计划不就是改变了吗?治标的工作不做,非要图省事改参数,长远来说是很有害的.
今天也是的,提交了一个文档,让他们开发人员修改UPDATE语句,增加合适的索引列,但是他们的后台SQL开发人员不以为然,觉得这个表很小才2000行,,跑一个UPDATE语句,执行一次需要100多秒很正常,他说没有问题,我也是醉了,已经发生长时间的锁表等待了,还不改,我也只能提交给客户了,向上报了.


使用道具 举报

回复
论坛徽章:
74
ITPUB18周年纪念章
日期:2018-11-13 15:31:24秀才
日期:2017-02-22 15:18:00秀才
日期:2017-02-22 15:16:26秀才
日期:2017-02-22 15:14:12进士
日期:2017-02-20 09:43:02举人
日期:2017-02-20 09:42:18进士
日期:2017-02-20 09:42:18探花
日期:2017-02-20 09:42:18榜眼
日期:2017-02-20 09:42:18状元
日期:2017-02-20 09:42:18
发表于 2016-6-16 11:41 | 显示全部楼层
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?

只要不是低级程序员,大部分程序员都是熟悉数据库的。对于高级程序员来说,精通数据库使他们的必备之路。
大部分高级程序员都不需要DBA干活的。

3、你觉得当sql 到达设么层次的时候,你需要让开发必须改sql?

这个看项目经理给你的权利。项目经理不鸟你,dba就是个闲职,如果你硬是要开发改sql,对于职场而言,你就树立了敌人,吃亏的是自己。

4、大家有没有为了sql跟开发急眼的时候,分享下。

和上面一样。

使用道具 举报

回复
论坛徽章:
2
阿斯顿马丁
日期:2013-10-10 11:59:57三菱
日期:2014-02-18 14:33:24
发表于 2016-6-17 03:55 | 显示全部楼层
ninipig 发表于 2016-6-15 15:47
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
现在四个月快餐式培 ...

我们这边经常被奇葩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:06 | 显示全部楼层
WY24420 发表于 2016-6-13 09:21
1、你觉得开发应该深入学习数据库吗?是的话你觉得什么层次比较好,不是的话,为什么?
结论:开发人员能够 ...

并不是所有开发都是这样的,如tomkyte所说,开发和dba不是两个阵营的,每次比谁更聪明,其实也就往往拿自己的优点和别人的短处比。

使用道具 举报

回复
论坛徽章:
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:13 | 显示全部楼层
xgghxkhuang 发表于 2016-6-17 20:06
并不是所有开发都是这样的,如tomkyte所说,开发和dba不是两个阵营的,每次比谁更聪明,其实也就往往拿自 ...

开发也有了解并尝试使用oracle知识的,有的开发的sql编写技能和调优技术以及架构设计可以和中级dba媲美,术业有专攻,一个良好的系统需要两者的通力合作,而且开发写的很烂的系统让dba去接手,其实蛮麻烦的,维护代价高。其实,有一部分dba曾经就是开发转过来的,术业有专攻,开发版的newkid就是开发高手,欢迎来转转。

使用道具 举报

回复

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

本版积分规则 发表回复

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