分类:
2008-10-15 13:43:20
总的考虑方向
1) 根据数据使用的方式来设计数据访问层
2) 缓存数据,避免不必要的操作
3) 使用服务帐户进行连接
4) 必要时连接,尽早释放
5) 关闭可关闭的资源
6) 减少往返
7) 仅返回需要的数据
8) 选择适当的事务类型
9) 使用过程
根据性能维护性、及实现难度来决定跨层数据传递的方式
2 具体实现
1)选用合适的Data Provider
应尽量使用专用的Data Provider,下面是一个性能比较表
可以看出SqlClient的速度是最快的,其主要原因是其他的数据提供者都经过的几个层次的转换
可以看出,SqlClient直接访问DB Netlib而其他的数据提供者都经过了两层转换,因此,在设计多层应用的时候,并不是层次越多越好,而是应该在可扩展性与性能间取折中,增加层次是会降低性能的。
1) 数据库连接
i. 在方法中打开和关闭连接,即不要在类的构造函数中打开连接,在类的析构函数中关闭连接。
ii. 使用完连接明确地关闭。因为有连接池的支持,关闭连接只是将连接放回连接池,并不是真正销毁,不会带来性能开销,而会增加连接池中可用连接,提升性能。
iii. 当使用DataReaders时,指定CommandBehavior.CloseConnection
iv. 当使用Fill()与Updata()时,不要手动打开连接。因为DataAdapter会自动开启连接,但是如果是Command则需要手动开启。
v. 避免检查OleDbConnection的State属性,其性能开销相当大。
vi. 使用连接池。这种方法可以大幅度提高性能。默认的情况下,通过SqlClient连接数据库时,会使用连接池,另可以通过连接字符串来控制连接池的最大值,最小值,以及是否开启连接池。
[1]