动态 SQL 你还敢用?-程序员宅基地

2010 年左右的时候,笔者曾服务于阿里旗下服装 ERP 公司。

 

该公司的 ERP 产品服务于全国 8W+ 零售店。当时用的语言是 Delphi(严重暴露自己的年龄了,估计现在的小朋友们都不知道 Delphi 是何物)。平时虽有些小流量,小卡顿倒也过得相当稳,技术部的开发们应付这些司空见惯的小问题还是多少有些把握的。

 

直到某天,上海已进入酷暑,特别热,人也燥,估计机器也燥。上午 10 点陆续有华东、华南地区的门店来电话,说结算特别慢,有些客户等得都发毛了,还都是星级老客户。要求技术部马上解决。技术经理马上召集大伙开会,意思是来活了,不一样的活。当然了老司机们是不当回事的,多吸两口烟,姗姗来迟。

 

当然,会议室的气氛相当凝重。

 

DBA 组老大谢工已经 OnCall 到位。这位团建时候都带着厚厚的从红门(Red Gate)打印的《 SQL Server Internals 》的中年男,给全场的威慑力是相当惊人的。他出现了,问题就严重了。当然姗姗来迟的老司机们也知道基本没他们什么事儿了,可死寂般的 16 平会议室却没给他们任何宽心的余地,紧盯着打着圈的 ERP 大屏一筹莫展。而另一屏的 ITIL 检测,已经显示数据库服务器 100% CPU利用率,横了近半小时,仍不见下去的表象。久横必跌,可惜真不是中国股市。

 

“周末有新上什么版本吗?” 显然谢工对之前的代码信心十足。

 

“没有大的动作,微调了下库存状态的查询接口。”

 

“涉及到了 SQL 的存储过程没?”

 

“我写了个查询,定义了一个参数,用来接收搜索条件?”

 

“调出来看看”

 

负责 UI 的小飞,抓过键盘,清脆的敲下了 sp_helptext.

 

“加了一个 @filter, 用来接收前端的各种组合查询条件,拼接成动态的 SQL ,灵活查询。”

 

“马上把这接口关了” 谢工没给一丝笑容,“你新来的吧,SQL 规范手册读了吗?”

 

“我刚进公司不久,上家公司也是做 ERP 的” 小飞似乎不满这种命令式的语气,说话间,修改了 web.xml.

 

"下来了,下来了...." 年轻的工程师瞬间喜笑颜开,似乎刚才就是一场短暂的地震。

 

“来来来,冰棍来了” 进入酷暑之后,技术经理每天的事情之一就是去买楼下的和路雪,“谢工,你给我们讲讲原理呗?”

 

“看在冰棍的面子上,就讲一句” 这谢工也是个贪食主义者,好吃!据说 IBM,EMC, HP(当年的三大咨询公司)努力挖,谢工也丝毫不动摇,宁愿在这里拿个基本工资,就是因为楼下的美食街。大嘴吃四方,是他的名言。每个星期还去锦江的自助旋转厅吃上一回,每次回去都被他老婆骂,但依然改不掉。“不抽烟,不喝酒,剩下的钱不得犒劳这张嘴么?” 谢工也经常在我们面前豪气的吹嘘自己怼媳妇儿的说辞。

 

"硬解析 SQL 文本将带来大量的 CPU 消耗!” 谢工本想留下这么句话就走,但经不住技术经理的满嘴妙语,“谢工,还是多讲讲吧,这句心法我都很难理解啊”

 

“一图胜千言,给大家留个图。再多说我也不会了,嘴笨!” 谢工神秘的从他的博客里挑出一张图,打在了 PPT 上

 

640?wx_fmt=png

 

“谢工,你的意思是动态 SQL 引起了大量的硬解析,造成了 CPU 的紧张?” 小飞的眼神充满了悬疑。

 

“大量的 CPU 占用率阻塞了数据库的其他操作,挂起的操作,接连就会引起其他的等待。手册还是要看的,写的明白了,不要写动态 SQL”

 

 

640

猜你喜欢:

 

听说你们的数据库并发 2 万就跪了?

列出 SQL 数据库行数最多的前十张表,你要几秒?

BI, 数据仓库,ETL, 数据开发,有什么区别?

 

640?wx_fmt=jpeg

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wujiandao/article/details/88266008

智能推荐

outlook2007无法打开outlook窗口的解决办法-程序员宅基地

文章浏览阅读224次。非法关机导致Outlook2007无法正常启动,运行Outlook,界面显示“无法启动wicrosoft office outlook ,无法打开outlook窗口”的错误信息。0.首先备份你的邮件,文件名一般为outlook.pst。在你的c盘用户文件下你的用户下的appdata-mirosoft-outllok目录中,个别机器可能不一样,可以自己查找!1.到你..._outlook2007对话历史无法打开某个窗体区域

剑指offer-js 删除链表中重复的结点_js移除链表中的重复节点-程序员宅基地

文章浏览阅读200次。删除链表中重复的结点相似题目:leetcode-java 删除排序链表中的重复元素–保留一个元素leetcode-java 删除排序链表中的重复元素II – 不保留重复元素上面用的方法会多一点,可以从多个角度理解一下题目描述: 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5问题分析: 方法一: 直接修改 _js移除链表中的重复节点

net::ERR_BLOCKED_BY_CLIENT的解决办法-程序员宅基地

文章浏览阅读2.9k次。我碰到该问题是因为前端代码在我们服务器存放,用对方提供的域名访问,结果因为对方域名可能被拉黑,广告插件自动拦截了所有资源,导致资源无法加载出来.另外还有一种部分图片加载不出来的问题,很有趣,我的图片名字是tanchuang.jpg,结果也加载不出来,然后我改了个hehe,就好了.解决办法有两种:1.笨办法:可以找一个好的域名(没有被列入黑名单的域名)来链接资源,路径都写成绝对路径,这样..._net::err_blocked_by_client

同样是码农,收入差距怎么这么大呢?-程序员宅基地

文章浏览阅读263次。我一直很奇怪一件事情,特别是我30岁之后。20多岁的时候,人人都在上班,作为普通人,大家的处境都差不多。可过了30岁,好像突然就“分流”了。有的人突然一飞冲天,大Hous..._如果和国内码农薪资差别

jsBarcode生成条形码_barcode.js-程序员宅基地

文章浏览阅读4.3k次。1.pc端/移动端生成条形码html <svg id="svgcode"></svg> <canvas id="canvascode"></canvas> <img id="imgcode" />js<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.3.min.js"></script><script src_barcode.js

【剑指offer】反转链表(递归+非递归)_反转链表 剑指offer-程序员宅基地

文章浏览阅读2.2k次。题目:输入一个链表,反转链表后,输出链表的所有元素。分析:反转链表只需改变链接方向,改变方向时需要将原本指向后一个结点的链接方向指向前一个结点,因此需要记录下三个结点。实现:public ListNode ReverseList(ListNode head) { ListNode cur = head; ListNode next = null; Li_反转链表 剑指offer

随便推点

一些网站-程序员宅基地

文章浏览阅读297次。转自 http://blog.sina.com.cn/s/blog_4062094e01008tc0.html 一些大概有价值的网站,需要进一步的补充和甄别。 终于发现把有用的网站放到收藏夹里也不可靠了,总是丢,也疏于整理。现在在 www.g...

深度学习-自动求导-程序员宅基地

文章浏览阅读846次。跟沐神学AI-矩阵计算_自动求导

通过Google AdSense赚钱最多的8个网站_利用google earth stidu赚钱-程序员宅基地

文章浏览阅读3.4k次。转贴自:http://www.101du.cn/uMoney/245-11013.aspx内容摘要:Google AdSense是最大的搜索引擎google提供的网络联盟模式,加盟网站(网站内容发布商)把google关键词广告代码放置在自己的网页内容中,就可 以展示google提供的各种规格的与网页内容相关的广告,当访问者点击联盟网站的google广告时,google将部分广告费作为佣金支付给内容_利用google earth stidu赚钱

HDU:6708-Windows Of CCPC_g - windows of ccpc hdu - 6708-程序员宅基地

文章浏览阅读223次。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6708解题心得:就是一个矩阵拼接的模拟,预处理出来之后直接输出就行了。#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 1050;int n, t;bool..._g - windows of ccpc hdu - 6708

Ubuntu20.04_交叉编译工具链_ubuntu 交叉编译串口代码-程序员宅基地

文章浏览阅读4.3k次。交叉编译工具链1. 交叉编译工具链是什么?2. 常用交叉编译工具链Linaro三级目录1. 交叉编译工具链是什么?本地编译:x86机器编译出x86上的代码,在x86机器上运行。交叉编译:x86机器编译出arm上的代码,在arm机器上运行。2. 常用交叉编译工具链Linaro三级目录..._ubuntu 交叉编译串口代码

ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系-程序员宅基地

文章浏览阅读166次。前面已经介绍了如何使用URDF建造机器人小车并显示在Rviz的仿真环境里面,但是小车是静止的。下面介绍如何让它在Rviz里面动起来,并理清URDF,TF 和 odom 的关系。1. ROS中base_link, odom, fixed_frame, target_frame和虚拟大地图map的关系一般在urdf文件中都要定义base_link,它代表了机器人的主干,其它所有的frame都是..._target_frame frame cartographer

推荐文章

热门文章

相关标签