当前位置: 首页 > news >正文

从被动到主动,换个角度看DB

作者:韩锋

我曾长期从事ERP、电子政务类软件的开发工作,作为数据库的深度使用者,接触到大量数据库,如FoxPro、SQLServer、Oracle、Informix……在实践过程中,对这一领域也愈发感兴趣,并最终选择从事数据库相关工作。我曾长期担任多家公司DBA、数据库架构师,参与过很多项目的数据库设计、开发、优化工作,并在这一过程中积累了不少经验。

 

在多年的工作中,我发现数据库领域存在一些现象。

 

现象一,开发人员将数据库视为“黑盒子”。开发人员不关心、不重视数据库,也不了解SQL语句的执行情况、数据库的运行机制,甚至因为引入很多ORM工具,导致开发人员不了解数据库是如何完成请求并获得数据的,优化自然无从谈起。

 

现象二,SQL优化只是DBA的事情。在很多设计、开发、测试人员的眼中,SQL优化只是DBA的事情,他们不需要去关心。反映到具体工作中,他们缺乏相应的优化意识,只注重功能的实现而忽略了相应的执行成本。最终的结果往往就是代码质量不高,软件上线后问题多。

 

现象三,盲目优化。有些公司很重视SQL优化工作,但又缺乏必要的技术投入。经常见到这样的开发规范—所有WHERE条件字段都必须加上索引,结果就是数据库被“过分”优化,适得其反。

 

现象四,SQL优化很简单。有些人认为SQL优化很简单,甚至觉得SQL优化就是加索引的事!我就曾遇到因为索引过多导致执行性能低的案例。

 

现象五,硬件技术发展很快,不用再计较SQL优化。硬件技术近年来发展迅速,使得服务器的处理能力有了极大的提升。但我们要清醒地看到,SQL优化才是问题的根本解决之道。

 

现象六,开发人员想提高SQL语句质量却无从下手。有些开发人员认识到了SQL语句质量的重要性,想要提高却无从下手。一方面,他们本身不具备数据库的专业知识;另一方面,SQL编程本身也有其特殊性,与其他常用开发语言有较大差异。正是这些因素,导致开发人员想要提高SQL语句质量却困难重重。

 

现象七,重运行维护,轻开发优化和架构设计。大多公司意识到了数据库的重要性,但往往只重视运维而忽视了前期的架构设计、开发优化。我们经常会看到一个项目中,公司会花大笔费用购买昂贵的硬件、备份软件等,却不舍得购买与数据库优化、SQL审计相关的软件。此外,随着自动化运维的逐步推广以及数据库云服务的逐渐成熟,传统意义的数据库运维工作必然会逐步萎缩,取而代之的则是数据库的设计、开发乃至整体架构开发。这也是DBA未来发展的一个方向。

 

现象八,资料繁多,却无从选择。Oracle数据库在国内流行多年,该领域的书也非常多,但涉及优化书的相对较少,特别是局限在SQL语句优化范畴的。近年来,我也发现了几本不错的书,但普遍存在技术偏深、可操作性不强的问题,对于广大数据库开发的初学者或者有一定经验但急需提高的从业者不太适用。

 

上述种种现象促使我有了将多年的经验汇集成册、编写出版的想法。一方面是能够帮助有相关需求的人,另一方面也是对自己多年的工作进行总结。《数据库高效优化:架构、规范与SQL技巧》已于今年7月出版上市。最后,希望这本书能够引导开发人员、DBA在SQL语句的编写优化上能有进一步提高。

 

点击链接了解详情并购买 

机械工业出版社华章公司特邀到了韩锋老师,他将带着他的新书《数据库高效优化:架构、规范与SQL技巧》,在8月30日(今晚)19:30,在直播栏目中与大家分享如何多角度了解数据库运行状况,以及如何系统性解决数据库优化瓶颈。

更多精彩回顾

书讯 |华章计算机拍了拍你,并送来了8月书单(下)

书讯 | 华章计算机拍了拍你,并送来了8月书单(上)

上新 | 首本深入讲解Linux内核观测技术BPF的书上市!
书单 | 《天才引导的历程》| 西安交通大学送给准大一新生的礼物

干货 | 机器人干活,我坐一边喝茶——聊聊最近爆火的RPA

收藏 | 揭秘阿里巴巴的客群画像

点击阅读全文进入直播间

相关文章:

  • 【第19期】追MM的各种算法
  • 巨详细!使用OpenCV和OpenVINO轻松创建深度学习应用
  • 9月书讯(上)| 开学季,读新书
  • 一本书带你吃透Nginx应用与运维
  • 开学季——计算机专业学生必读的10本畅销经典
  • 9月书讯(下)| 开学季,读新书
  • 交互设计是什么?
  • 开学季——想打好数学基础?这些经典教材你最需要!
  • Java 二十五载,正在 Kotlin 化!
  • 开学季 | 用十本书打破固有思维,“文理兼修”
  • 云安全调查:过去一年半80%的企业遭受云数据泄露
  • DB-Engines 9月数据库排名:ClickHouse一路猛冲,Redis坐稳第七
  • 跨平台桌面开发王器Electron:安装过程深入解析
  • 机器喵大作战 | 解剖人工智能、机器学习和深度学习
  • 【第20期】实践深度学习?先接住这三板斧再说
  • 【面试系列】之二:关于js原型
  • CSS实用技巧干货
  • ES6 ...操作符
  • github指令
  • Java读取Properties文件的六种方法
  • Java基本数据类型之Number
  • js操作时间(持续更新)
  • Laravel Mix运行时关于es2015报错解决方案
  • MaxCompute访问TableStore(OTS) 数据
  • Python十分钟制作属于你自己的个性logo
  • Python学习之路16-使用API
  • Shadow DOM 内部构造及如何构建独立组件
  • spring boot下thymeleaf全局静态变量配置
  • 彻底搞懂浏览器Event-loop
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 前端面试之CSS3新特性
  • 全栈开发——Linux
  • 算法-图和图算法
  • 一天一个设计模式之JS实现——适配器模式
  • 自制字幕遮挡器
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​​​​​​​​​​​​​​Γ函数
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (顺序)容器的好伴侣 --- 容器适配器
  • ******之网络***——物理***
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Core中的去虚
  • .NET 药厂业务系统 CPU爆高分析
  • .net反编译工具
  • /var/lib/dpkg/lock 锁定问题
  • :O)修改linux硬件时间
  • @Controller和@RestController的区别?
  • [android] 练习PopupWindow实现对话框
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [BUG]vscode插件live server无法自动打开浏览器