SQL Server开发人员需要避免的八种习惯

日期: 2012-11-18 作者:Don Jones翻译:冯昀晖 来源:TechTarget中国

唉,说起开发人员,DBA一定有一肚子苦水,但你却又离不开他们。在某些方面上,SQL Server开发人员和DBA们总有着长期的、“光荣的”历史性分歧,开发人员想为应用程序采取某种方法,而DBA们不希望那样做。   应用程序开发人员对SQL Server性能的影响是巨大的,可能是积极影响,也可能负面影响。你可以随便调整索引和存储子系统,但是你作为DBA对性能的影响比起训练有素的开发人员对性能的影响来说是微不足道的,开发人员才知道如何从SQL Server获得最佳性能。

但是,并不是所有开发人员都有这种经验和能力。本文中,笔者总结了SQL Server开发人员的八个不好的习惯,这些做法很可能会对系统……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

唉,说起开发人员,DBA一定有一肚子苦水,但你却又离不开他们。在某些方面上,SQL Server开发人员和DBA们总有着长期的、“光荣的”历史性分歧,开发人员想为应用程序采取某种方法,而DBA们不希望那样做。

  应用程序开发人员对SQL Server性能的影响是巨大的,可能是积极影响,也可能负面影响。你可以随便调整索引和存储子系统,但是你作为DBA对性能的影响比起训练有素的开发人员对性能的影响来说是微不足道的,开发人员才知道如何从SQL Server获得最佳性能。但是,并不是所有开发人员都有这种经验和能力。本文中,笔者总结了SQL Server开发人员的八个不好的习惯,这些做法很可能会对系统本身的性能造成极大影响。

  1、在服务器上运行所有应用。

  存储过程可以用像C#这类.NET framework语言替代编写,一些开发人员喜欢把几乎整个应用程序的逻辑都放到SQL Server上。不幸的是,这并不是使用SQL Server的最佳方式。我们需要考虑一定的平衡,有一些程序是需要放到SQL Server上运行的,而另外一些应用,尤其是那种长期运行的处理,需要在其它地方运行。

  2、写ad-hoc查询。

  SQL Server讨厌运行ad-hoc查询,因为它每次都要为这些查询编译查询计划。相反,开发人员应该把查询编写成存储过程,这样就可以让SQL Server更容易缓存执行计划。存储过程还有助于提供对某些类型安全攻击的有力保护。

  3、在开发环境中设计索引。

  开发环境永远不能反映真实生产环境的情况。虽然SQL Server开发人员在开发过程中建立索引是一种较好的初步设想,但是你应该在进入生产环境以后再次体验它们的效果,重新调整索引以便适应真实环境,并定期重复这一动作以满足生产需求的不断变化。

  4、查询太多数据。

  没有哪种行为能比得上开发人员查询一百万行数据对服务器性能所造成的破坏,而实际上他只需要其中的一行数据。相反,开发人员可以在客户端应用中实现分页,只查询需要显示的数据,只是在用户真的需要那么多数据的时候再去查。

  5、使用sysadmin或者“sa”账号。

  这是最让安全管理员讨厌的做法,但是对于开发人员,他们很容易让客户端应用随意访问SQL Server,无需花时间理解安全方面如何考虑。SQL Server提供了许多更好的选择,那些把“sa”账号写进应用程序的SQL Server开发人员应该受到鄙视。

  6、无限制地使用游标。

  有经验的DBA都知道,游标是让人又爱又恨的东西,而且他们知道开发人员对游标经常是青睐有加。对于SQL Server,游标是内存和处理器密集型的,需要在内存中批量吞吐大量数据,然后一次处理一行。开发人员最好避免使用,除非真的必要。

  7、不使用视图。

  视图是SQL Server获得性能提升的另一种方式,因为它与存储过程一样,可以缓存执行计划。视图还帮助隐蔽数据结构,避免客户端应用看到真实的后端数据库结构,这样随着时间的推移做结构变化也就更容易了,会对客户端造成很少的影响。

  8、过度标准化。

  虽然SQL Server可以支持处理相当大量的表连接操作(我有的客户端应用使用九个或十个表连接的情况很常见),但是超过一定的量是会有问题的。如果经常运行多达20个表的连接,那就有点太多了,这可能是数据库设计过度标准化的信号。标准化对于减少冗余有好处,但是也带来了性能压力。非规范化是以更优的性能为理由,消除标准化规则应力的过程。

  出现这些问题,DBA往往没有太多的办法,因为它们通常是内嵌在代码中的,DBA是接触不到的。但是你可以提醒SQL Server开发人员注意,要求他们在未来的开发中对这些问题给以关注。

作者

Don Jones
Don Jones

投稿作者

相关推荐

  • Notre Dame对云端SQL Server性能基准的探索实践

    确立SQL Server的性能基准,对于云端迁移来说是至关重要的第一步,一位来自于University of Notre Dame 的DBA表示,他正在试图通过数据库监控软件,找出SQL server的性能基准。

  • DBA必须掌握的数据库恢复管理技术

    如果没有备份副本,数据库管理员就无法还原数据库,所以DBA在恢复之前倾向于考虑备份是合乎逻辑的。 但是,对我来说,这种逻辑一直是错误的。

  • DBA也要和领导抢饭碗?

    数据库架构师Ziaul Mannan 认为,DBA有成为高管的潜在可能,而这种潜力在过去往往被忽视,他还将证明DBA技能到领导力的转变是可行的。

  • Oracle备份和恢复简史

    这些年来,Oracle数据库备份和恢复方式已经发生了重大变化,特别是在Recovery Manager(RMAN)功能有了进一步改善之后。