net的并发性处理
1>在可断开连接架构中必须要面对并发问题
2>当两个(或多个)用户获取并修改相同的记录,然后试图同时维持各自的修改时,将会发生冲突:脏读,不可重复读,虚幻读
3>当提交多个更新的时候,会造成部分更新无法正确完成
4>悲观与乐观(ADO.NET构建)并发锁
5>与DataAdapter对象相连接的DataSet对象使用乐观锁来处理记录内容冲突
6>如果使用用户存储过程来替代表操作的话,并发问题的处理还需要一些额外的工作
7>Data Adapter配置向导能够创建存储过程来处理这个问题
8>当ContinueUpdateOnError为false(缺省值)时,在发生第一个冲突的时候会抛出DBConcurrencyException异常
9>捕获该异常并且通知用户,或者处理该异常或提示用户下一步需要做出哪些选择
2.连接池
1>链接是通过对链接字符串精确匹配的法则被池化的。池化机制对名称-值对间的空格敏感。
两个连接字符串完全一致的时候,最终才创建一个连接池.如果两个连接字符串不同则会创建两个数据库
连接池
"Integrated Security=SSPI;Database=Northwind"
"Integrated Security=SSPI ; Database=Northwind"
2>可以在连接池中设置排队时间,当等待时间操作指定时间的时候则系统会抛出一个错误,默认是15秒
Connect timeout = 30
3>性能:获得数据源和消除数据源的速度尽量快
3.事务
1>隔离级别枚举(IsolationLevel):ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Unspecified
系统默认的是:ReadCommitted.
Serializable提供了最高的隔离级别,但却只有最低的执行效率
2>当两个(或多个)用户获取并修改相同的记录,然后试图同时维持各自的修改时,将会发生冲突:脏读,不可重复读,虚幻读
3>当提交多个更新的时候,会造成部分更新无法正确完成
4>悲观与乐观(ADO.NET构建)并发锁
5>与DataAdapter对象相连接的DataSet对象使用乐观锁来处理记录内容冲突
6>如果使用用户存储过程来替代表操作的话,并发问题的处理还需要一些额外的工作
7>Data Adapter配置向导能够创建存储过程来处理这个问题
8>当ContinueUpdateOnError为false(缺省值)时,在发生第一个冲突的时候会抛出DBConcurrencyException异常
9>捕获该异常并且通知用户,或者处理该异常或提示用户下一步需要做出哪些选择
2.连接池
1>链接是通过对链接字符串精确匹配的法则被池化的。池化机制对名称-值对间的空格敏感。
两个连接字符串完全一致的时候,最终才创建一个连接池.如果两个连接字符串不同则会创建两个数据库
连接池
"Integrated Security=SSPI;Database=Northwind"
"Integrated Security=SSPI ; Database=Northwind"
2>可以在连接池中设置排队时间,当等待时间操作指定时间的时候则系统会抛出一个错误,默认是15秒
Connect timeout = 30
3>性能:获得数据源和消除数据源的速度尽量快
3.事务
1>隔离级别枚举(IsolationLevel):ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Unspecified
系统默认的是:ReadCommitted.
Serializable提供了最高的隔离级别,但却只有最低的执行效率
SQLServer
1>查看当前连接:
控制台->SQLServer组->local->管理->当前活动->进程信息