SQL Server应用程序性能调优之设计优化
创始人
2024-03-20 08:30:26
0

优化你的应用程序设计

  如果你为应用程序使用了多层设计,SQL Server只是一个大型应用程序的一部分。多层设计的实现方式对应用程序性能影响之大,或许会远远超乎你的想象,它比SQL Server所带来的影响大的多。

 不幸的是,在应用程序性能低下时,人们往往将其原因归咎于SQL Server,而没有反思应用程序的设计,实际上很多情况下设计缺陷才是导致应用程序性能问题的主要原因。下面我提供一些可以帮助你进行应用设计的建议,以防止SQL Server继续独担性能低下的罪名。

  在设计多层应用时你首先需要决定的是,选择逻辑和物理设计。在这两种设计中,物理设计中最易发生导致性能问题的错误,原因是在这个设计中要完成理论在真实世界中的实现。和任何其它事情一样,你面临着多种选择,其中很多选择会带来升级或性能问题。

  为了确定哪一种选择才是正确的,需要你再次借助于测试手段,在设计阶段就开始早期潜在测试,你可以使用快速原型测试法,来判断哪一种实现可以最好的满足用户的需要。

  另外,当你在设计物理实现时,尽量遵循以下建议,来确保应用程序的可升级性和最优化性能:

  尽可能将以数据为中心的任务以存储过程的形式在SQL Server上完成。避免在展现层和业务层处理数据。

  不要在业务层保存修改状态数据,尽可能的在数据库中实现。

  不要创建复杂或难懂的对象分级。复杂类的创建和使用通常会比较耗资源,会降低应用程序的性能和扩展性。原因是当创建和释放这些对象时,内存分配操作的开销通常比较大。在进行应用程序设计时,可以考虑使用微软事务处理服务器(MTS)来充分利用数据库连接池和对象池的优势。MTS可以运行将数据库连接和对象都放到pool中,可以大大提高应用程序的整体性能和可扩展性。

  如果你的应用程序针对SQL Server的查询耗时较长,在设计应用程序时可以考虑异步进行查询。这样一个查询不用必须等待前面一条执行完后才能进行。将这个功能加入到你的多层应用软件的一个办法是使用微软消息队列服务器(MSMQ)。

  虽然按照以上建议并不能确保你获得一个可升级、快速执行的应用程序,却可以说是一个好的开始。

  优化数据库的设计

  与应用程序设计类似,数据库设计对SQL Server应用程序的可升级性和性能也非常关键。同样与应用程序设计类似,如果你在开始的时候没有合理的进行数据库设计,当应用程序被投入到生产环境中后,再对其进行修改往往非常困难,且代价较高。在设计SQL Server数据库时,以下几件事情对其升级和性能非常关键,需要牢记。

  同样的道理,你需要尽可能早的使用真实数据来测试你的设计。这意味着你需要开发具有示例数据的原型数据库,然后使用预计会在真实应用中发生的行为类型来对该设计进行测试。

  一开始就需要你确定的设计原则之一是,数据库将被使用来进行联机事务处理(OLTP),还是在线分析处理(OLAP)。在设计数据库时人们常犯的一个最大错误是,试图设计数据库同时满足OLTP和OLAP需要。如果你希望获得高性能和可扩展性,这两种应用程序类型是互相排斥的。

  OLTP数据库通常是高度规格化的,有助于降低必须存储的数据量。存储的数据越少,SQL Server执行的I/O操作就越少,数据库访问就会越快。事务处理也尽可能在短时间内完成,以减少锁定冲突现象。最后一点,为降低大量插入、更新和删除操作的开销,要尽可能少的使用索引。

  另一方面,OLAP数据库则是高度反规格化的。另外,它不使用事务处理,因为数据库是只读的记录锁定不是什么问题。当然,为了满足广泛的报表需求,需要大量使用索引。

  由此可见,OLTP和OLAP数据库实现的目的完全不同,你不可能设计一个数据库同时满足这两种需求。

  在数据库设计早期阶段发现问题后,修改起来相对比较容易,因此不要等到应用程序开发完成后,再去修改数据库设计,这几乎是不可能的。

【编辑推荐】

  1. 微软将推出两款捆绑式服务器软件 中小型企业即插即用
  2. 用端口碰撞技术实现服务器远程管理
  3. Windows Home Server软件错误 致存储文档毁损

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...