Oracle并发策略与更新重启动解决方案
Oracle并发策略
Oracle采用读共享和锁机制实现并发控制:
- 读共享:支持并发读取,读操作不阻塞写,写操作不阻塞读。
- 多版本读一致性:通过UNDO记录还原数据块前镜像,实现读一致性。
- 锁机制:使用TX锁控制并发修改一致性,确保数据一致性。
更新重启动的产生
更新重启动触发条件:
- 并发修改冲突:写操作发现要修改的记录在更新发起后发生变化,为避免数据不一致,回滚已更新记录并重新发起更新。
- 查询条件不一致:更新过程中发现记录与查询条件不一致,使用SELECT FOR UPDATE获取锁后重新执行。
更新重启动的意义与代价
- 意义:避免查询和DML操作结果不一致,提供数据库一致性的深度保护。
- 代价:回滚后重新执行导致操作时间变长,资源消耗大;多个并行写操作可能导致执行顺序改变。
更新重启动的监控
- 统计信息监控:通过
V$MYSTATM和V$STATNAMES查看rollback changes -undo records applied和transaction rollbacks统计信息。
- 日志挖掘:使用
DBMS_LOGMNR分析日志,识别更新重启动事件。
国产化替代的启迪
国产化数据库需在以下方面实现兼容:
- 语法兼容:SQL、PL/SQL、视图、包、类型等语法兼容。
- 接口兼容:OCI、Pro*C、JDBC、SQLLoader、SQLApi等接口兼容。
- 承载能力兼容:支持巨量数据、负载、元数据。
- 功能机制兼容:事务机制、事务可见性、锁持有和释放、更新重启动等机制兼容。