访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET 中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。连接池的大小是有限的,如果在连接池达到最大限度后仍要求创建连接,必然大大影响性能。因此,在建立数据库连接后只有在真正需要操作时才打开连接,使用完毕后马上关闭,从而尽量减少数据库连接打开的时间,避免出现超出连接限制的情况。
19.将 SqlDataReader 类用于快速只进数据游标
SqlDataReader 类提供了一种读取从 SQL Server 数据库检索的只进数据流的方法。如果当创建 ASP.NET 应用程序时出现允许您使用它的情况,则 SqlDataReader 类提供比 DataSet 类更高的性能。情况之所以这样,是因为 SqlDataReader 使用 SQL Server 的本机网络数据传输格式从数据库连接直接读取数据。另外,SqlDataReader 类实现 IEnumerable 接口,该接口也允许您将数据绑定到服务器控件。有关更多信息,请参见 SqlDataReader 类。有关 ASP.NET 如何访问数据的信息,请参见通过 ASP.NET 访问数据。
20.高性能的 SQL 语句规则
尽量避免全表扫描
尽量避免在 where 子句中对字段进行 null 值判断
尽量避免在 where 子句中使用 != 或 <> 操作符
尽量避免在 where 子句中使用 or 来连接条件
in 和 not in 也要慎用
不要在 where 子句中的「=」左边进行函数、算术运算或其他表达式运算
Update 语句,如果只更改1、2个字段,不要Update全部字段
对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,否则逻辑读会很高,性能很差
尽可能的使用 varchar/nvarchar 代替 char/nchar
21.缓存
缓存是一种用空间换取时间的技术,通俗点也就是说把你得到的数据存放在内存中一段时间,在这短时间内服务器不去读取数据库、或是真实的数据源,而是读取你存放在内存中的数据。 缓存是网站性能优化不可缺少的一种数据处理机制,他能有效的缓解数据库压力。 ASP.NET 中的缓存主要分为:
页面缓存
数据源缓存
自定义数据缓存
22.做负载均衡和服务器加成
负载均衡不应该仅仅被看作是实现可扩展性的一种手段。尽管它肯定提高了可扩展性,很多时候它增加了 Web 应用程序的性能,因为请求和用户都散发着多个服务器。
23.通过 FxCop 做代码检查和优化
FxCop 是一个代码分析工具,它使用基于规则的引擎,来检查出你代码中不合规范的部分;你也可以定制自己的规则加入到这个引擎。其中的一些规则是:
避免过多的局部变量
避免使用未调用的私有代码
避免未实例化的内部类
避免使用未密封的特性
避免进行不必要的强制转换
以内联方式初始化引用类型的静态字段
用 NeutralResourcesLanguageAttribute 标记程序集
将成员标记为 Static 等等。
24.ASP.NET 性能监控工具
这些是用于监视代码的性能的工具。
.NET 内存分析器
Red Gate ANTS 性能分析工具
Fiddler
性能计数器
以上是一些性能调整的提示。性能调优不是一天两天的工作,而是一个反反复复的过程。对于网站开发人员来说,在编写 ASP.NET 应用程序时注意性能问题,养成良好的习惯,提高应用程序性能,至少可以推迟必需的硬件升级,降低网站的成本。
您可能感兴趣的文章: