oracle多用户并发及事务处理

多用户并发访问

事务:作用于某些数据的一个不可分割的操作

锁:写锁、互斥锁(仅能被一个进程使用) 读锁、共享锁(可被多个进程使用)

更新丢失

脏读

不可重复读

幻影读

隔离级别:

1 READ COMMITTED 每个语句得到完整的视图

2 SERIALIZABLE 事务级别实施串行化

Oracle并发特性

1 回滚段:存储“撤销”信息的数据结构

redo日志用来记录数据库的所有事务;回滚段用于提供事务回滚和读一致性

2 系统改变号 SCN:保证事务执行的顺序

3 数据块中的锁:每个锁只影响数据块的一行

冲突写过程:

1 A更新操作

2 获取SCN,读取目标数据块

3 记录行锁信息

4 修改写入redo日志缓存

5 写入回滚段

6 B更新操作

7 获取SCN,读取数据块

8 发现上锁,如果是READ COMMITTED 等待执行完成后继续;如果是SERIALIZABLE,返回错误

9 A提交事务

10 如果B READ COMMITTED,继续执行

工作空间:与数据的变动分离,创建特定时间版本的数据空间

在线事务处理 OLTP

原子性

一致性

隔离性

持久性

OLTP通用特性:

1 事务吞吐量大而且并发用户量大

2 明确的性能需求

3 高可用性

4 可扩展性

通用并发与性能:

1 非升级行锁技术:只对事务处理的行加锁,不将锁的级别升级到也级别或者表级别

2 多版本读操作一致性:在不加读锁的情况下保证语句级和事务级的数据一致性

3 共享SQL:将经过分析和优化的SQL存放在共享内存池中的共享SQL区 内

4 存储概要:支持执行计划的稳定性

可扩展性:

多线程服务器MTS

Oracle Net连接池:允许客户端共享一个物理网络连接池

Oracle Net连接管理器:为多个客户分配一条网络连接。没有“超时”

实时应用程序集群:

高速缓存熔合:将所有的数据存放在实时应用集群中的每台主机的每个缓存内,这些数据对于急群众的其他任意主机都是可用的。

高可用性:

1 备用数据库:

2 透明故障迁移TAF:主机实例失败时,自动连接到另一个oracle实例

3 oracle 流/高级队列 AQ:一种异步或者延期的系统间通信方法

4 Oracle流复制:利用内置的复制功能提供数据冗余

本文转自博客园xingoo的博客,原文链接:oracle多用户并发及事务处理,如需转载请自行联系原博主。

上一篇:Boost::asio io_service 实现分析


下一篇:C++语言基础 例程 带默认参数的构造函数