笔者见过很多性能问题,实际上都不是SQL Server的问题,比如从前端导入数据时,部分开发人员在导入的过程中使用前端语言过多地处理数据逻辑,把一些数据库强项放到前端处理,往往就导致应用程序端的内存溢出等问题。
还有一种比较常见的情况,就是前端程序用游标去读取大数据量的结果集,这一方面会导致速度变慢,另外一方面会使得数据集占用内存过久,影响其他请求的性能。在撰写本书过程中笔者还遇到过一种情况:编程语言是Java和dorado,由于展示方式的错误,导致登录应用程序之后一直没有响应,后来发现是首页的树结构问题,树结构菜单展开后会增加SQL服务器的压力。针对问题修改之后运行恢复正常。
应用程序的设计对性能也非常重要,如何处理事务的逻辑、工作流是否合理,以及安全性、会话管理和缓存机制等都对性能和扩展性有很重要的影响。请记住,应用程序和SQL Server组合出来的系统是一个整体,不能单独讨论,但是本书不是百科全书,所以只能针对一些特定的部分进行讨论。除了前端程序,还有数据库的设计,这部分也是很专业的知识点,但它超出了本书范围。