关于几种并发模型可能造成的副作用的读后感
来源:互联网 发布:南京大学软件学院考研 编辑:程序博客网 时间:2024/04/30 22:02
1:未提交读,这种并发不需要任何锁,而且可以读取别的进程用户修改的但未提交事务的数据。
不会发生丢失更新 因为能读到其他事务的修改结果 第一个:update table set column=column-5
第二个 update table set column=column-5 这个是在第一个的结果上进行修改的 因为能读到第一个的修改结果 所以可以避免丢失更新
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
2:悲观的已提交读 (系统默认级别) 读的时候不能修改但可以读 读的时候是共享锁 修改的时候不能读 修改的时候是排他锁 但是在一个事务里面 读完后 共享锁自动解除 也就是说这个时候别的事务可以进行修改 当修改完了后 第一个事务再次读取这个时候就出现了 不可重复读的情况
ALTER DATABASE testcsdn SET READ_COMMITTED_SNAPSHOT OFF
3:乐观的已提交读 什么时候都可以读 但读的是行版本控制器里面最后一次提交的版本 但最近的修改完成后 再次读取读的是最新的数据
因为已提交读 读出的都是完成事务的数据 所以可以避免脏读的情况
ALTER DATABASE testcsdn SET READ_COMMITTED_SNAPSHOT ON
4:可重复读 是悲观锁模式 可重复读等级比已提交读多了一个约定:所有的共享锁定持续到事务结束,不是在读取完数据就释放这样在一个事务的2次读取内 别的失误是不可能对共享锁控制的数据获得修改权限 所以可以实现可重复读的目的
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
5:快照 和乐观的已提交读的区别是 快照在一个事务里面始终使用同样的快照 也就是说在1个事务的2次读取之间 即使有修改了数据的事务发生 这2次读取使用的快照也是一样的 读不到更新的数据 重而读不到 更新(包括修改 删除 插入)
ALTER DATABASE TESTCSDN SET ALLOW_SNAPSHOT_ISOLATION ON
6:可串行化 也叫可序列化 也就是所有的动作 1个个排队去完成 重而避免了所有 的副作用 但也同时大打降低了硬件的利用率
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
- 关于几种并发模型可能造成的副作用的读后感
- 造成IOS程序崩溃的几种可能的原因
- android中可能造成内存泄露的几种方式
- 关于宏的副作用
- 几种并发服务器模型的实现
- 关于几种多线程模型的探讨
- 关于几种多线程模型的探讨
- 关于Struts2 验证框架不起作用的几种可能
- 网络服务器的几种并发服务模型
- golang常见的几种并发模型框架
- 七周七并发模型 | 读后感
- 关于#pragma pack的的副作用
- 造成端口起不来的几种情况
- Activity的生命周期可能造成的问题
- 可能造成内存泄露的东西
- 造成segmentation fault的可能原因分析
- 造成segmentation fault的可能原因分析
- 造成segmentation fault的可能原因分析
- Eclipse代码调试断点法
- 模板类和友元函数
- Oracle数据库的锁
- ASP实现记住密码的功能
- ASP实现隐藏下载地址和防盗
- 关于几种并发模型可能造成的副作用的读后感
- Program for Android in C/C++ with the Native Development Kit (if you dare)
- SQL Driver Java
- 善学则进
- 谷歌街景车遭巴黎隐私保护机构检查
- C++ 构造函数和析构函数的继承
- 程序员须知 收包与发包
- SilverLight + Html + JavaScript
- asp.net 架构