数据是应用系统的血液,没有数据的系统应用价值是非常有限的。经过多年的观察发现,身边很多的程序开发人员在开发应用系统的时候,都是按照标准SQL语法及应用方法去进行数据库设计,并进行应用开发的,没有任何的针对性。这种开发方式往往会引发的一个问题就是:试用阶段功能正常,但是业务量一上来后就开始性能问题就遍地开花。曾经遇到有一个应用系统,业务有一个多线程并发、高频单表查询的数据上报服务。而每次开启这个服务,服务器CPU资源就一路飙升到90%以上,居高不下,整个系统都慢了。开发商最开始的时候抱怨是服务器的配置不行,结果要求甲方购买了一台新服务器。其实我本来是要去帮他们做数据迁移的,结果迁移完了以后,服务一跑起来,cpu还是一直在70%以上。甲方怒了,开发商急了,一口咬定就是数据库的问题,他们的程序没有问题。被坑了一把,只好自证清白。。。后来一看代码,功能及SQL都很简单,大致就这么一句:String sql="SELECT * FROM XXX WHERE ID="+id;其中id是变量,每一句都是不同的值。这样子就意味着什么呢?意味着每一次请求都会被数据库认为是一个新的SQL,需要重新进行解析,而且还是高频率,高并发的情况下,能不高么?于是赶紧叫开发人员将SQL处理改成预编译的处理方式:String sql="SELECT * FROM XXX WHERE ID=?";把原来的id用占位符的方式进行处理,这样数据库就只需要在第一次请求进行解析,后面的请求都可以复用了。修改程序以后,重新启动服务,cpu一直保持在20%左右,主要问题得到解决。由于咱只是友情客串,搞掂这个就赶紧撤人了,至于开发商后面是怎么跟甲方交代的咱也不知道了(o^^o) 在开发的过程中,除了数据库,我们还会需要使用各种各样的平台和工具,不要盲目地去开工,要先了解它们的“脾气和习性”,这样才能充分发挥出它们的潜力,更好的应用到我们的系统当中。

最新文章

  1. 元组tuple
  2. css3属性小结
  3. WinForm中动态添加控件 出现事件混乱,解决办法记录。
  4. struts2 + spring + mybatis 框架整合
  5. ios8 下请求读取通讯录权限 (网上众多资料漏下得一个坑)
  6. 使用k-means对3D网格模型进行分割
  7. UVa 3704 Cellular Automaton(矩乘)
  8. 一个int类型究竟占多少个字节
  9. xp对opengl的支持问题
  10. tornado之文件上传的几种形式form,伪ajax(iframe)
  11. 基于Vue2写的一个有关美食项目
  12. Mac下安装oh-my-zsh
  13. .net公众号开发自动回复消息
  14. NOIP2012 Day1 T2国王游戏 洛谷P1080
  15. 初始JSP
  16. Why I Left the .NET Framework
  17. 省市区三级联动[JSON+Jquery]
  18. Jquery 移除某一个div下面的所有img图片
  19. java对象与xml相互转换工具类
  20. 最小生成树-普利姆算法eager实现

热门文章

  1. PAT_A1030#Travel Plan
  2. [adb]查看 App的appPackage和appActivity
  3. Qt5.11+opencv3.4的配置安装
  4. 一些诗词摘抄qwq
  5. 【习题 4-4 UVA - 253】Cube painting
  6. Maven学习总结(26)——maven update时,报:Preference node "org.eclipse.wst.validation"...
  7. 开源分布式MySQL中间件探究与应用 dba+
  8. 使用makeself创建安装文件
  9. Java Collection框架—List\ set \map 的异同世界
  10. SDUT 1500-Message Flood(set)