Chinaunix首页 | 论坛 | 博客
  • 博客访问: 514596
  • 博文数量: 704
  • 博客积分: 39800
  • 博客等级: 大将
  • 技术积分: 4950
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:32
文章分类

全部博文(704)

文章存档

2011年(1)

2008年(703)

我的朋友

分类:

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]   

【责编:Luzi】

--------------------next---------------------

阅读(230) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~