加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

十年DBA老兵:警惕,重Java轻SQL乃性能大忌

发布时间:2017-09-19 15:43:05 所属栏目:建站 来源:DBAplus社群
导读:副标题#e# 作者:黄浩 简介:从业十年,始终专注于 SQL。十年一剑,十年磨砺。3 年通信行业,写就近 3 万条 SQL;5 年制造行业,遨游在 ETL 的浪潮;2 年性能优化,厚积薄发自成一家。 注:《SQL性能优化与批判》是黄浩老师的系列新作,他将从过往在项目技

比如这次的 wm_concat 函数,我相信,之前的同事没有定位出问题所在,就是他没有遇到过 wm_concat 这个函数。所以总结经验是绝对正确的,虽然经验并不一定有用得上的机会。

  • 一点点运气

所学的一点点知识和积累的一点点经验恰好被用上了,这就是运气。因此运气也是辩证的,表面上是因为运气解决了这个问题,实则不然,如果没有那么一点点知识和经验,也不会这么顺利的解决。可见偶然中也有必然。

三、批判

7 月 25 日周末上线,周一一大早,开发兄弟像报喜一样告诉我,优化效果明显,用户非常满意。看着他稚嫩中略带青涩的笑脸,我也长舒一口气,毕竟这是我的第一个优化案例。

“黄工,你是怎么知道可以这样处理的?”

面对他的这个问题,我一时哑口,该如何回答呢?

“那你当初为什么要将 SQL 返回中间结果集,然后又在 Java 中做逻辑处理呢?”

“一方面,我们的架构规范就是这样的,要求尽量在 Java 中完成逻辑处理,减少 DB 的负载;另一方面,我也写不出这么复杂的 SQL,说实话,你给我的 SQL,我到现在还没有看明白。”

原来如此,我就告诉他:

“在二维关系的系统里面,Java 能处理的二维数据,在 SQL 中都能实现”

“哦”

“对了,你是怎么选择 wm_concat 这个函数的?”我知道这个函数很少用,也是 Oracle 公司未公开的内部函数。

“我是在网上查到的资料,看到这个函数可以实现功能,就拿来用了,没想到会带来这么大的性能问题。”

看得出来,他仍然保持了学生意气,有些自责,他好像又想起了什么来,赶紧补充说“因为时间太紧迫了,现在是敏捷开发,每两周一个版本,如果时间充裕的话,我想我也能通过查资料把这个 SQL 写出来的。”

他说着有些激动,但事实上他是认真的,也真的做到了。在后来的开发过程中,他写出了连我都写不出来的复杂 SQL。

通过与他的对话,我大致可以勾画出这个项目的一些基本元素:敏捷开发,双周迭代,无开发型 DBA,重 Java 轻 SQL。

这些是国内大多数项目的通病,本来是见怪不怪,但是出现在世界 500 强,国内 IT 软件天堂的大公司,还是让我有些意外,更让人感到后脊凉凉的。

敏捷开发要求快速交付,功能优先性能,急功近利;偌大的一个企业级平台项目,居然没有匹配一个专职的开发 DBA,SQL 的质量令人担忧。

而重 Java 轻 SQL 在信息管理系统中是一个大忌,会暗藏很多性能风险,这些都是性能的催化剂。这意味着我接下来的道路势必坎坷曲折、荆棘丛生。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读