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流复制:利用内置的复制功能提供数据冗余