Oracle专家高级编程 第一章

理解Oracle的体系结构

不要在MTS下运行长事物

不要在多线程服务器上运行45秒以上的事务,若一个进程阻塞可能导致长时间挂起

使用绑定变量

select * from amp where empno=:empno

绑定变量,它的值在查询执行时提供,查询经过一次编译后,查询方案存储在共享池(库高速缓存),用来检查和复用

  • 提交引用相同对象的完全相同的查询将使用共享池中的编译方案
  • 不仅使用较少资源
  • 减少锁存时间
  • 降低锁存频率
  • 提高了软件性能和可伸缩性

理解并行控制

并行控制实现数据库和系统文件分离,数据库之间分离

实现封锁

数据库利用锁定确保指定时间内,一个事务至多修改一处指定的数据

Oracle封锁策略

  • 只有当修改时,Oracle在行级上锁定数据,不能把锁定上升到块级或表级
  • Oracle绝不会为读取而锁定数据,简单读取不能在数据行上设置锁定
  • 数据的写入器不会阻塞数据读取器
  • 只有当另一个数据写入器已经锁定了某行数据后,才阻塞对他人对改行数据的写入

select for update

通过 for update 语句加锁,实现多进程下的资源同步

多版本

  • 一致读查询:在某一时刻查询产生一致结果
  • 非阻塞查询:数据写入器从来不阻塞查询
  • delete命令把数据复制到一个称为回滚段的数据区域保存

oracle所拥有的处理机制,无论何时修改,Oracle都在两个不同地方产生记录

  • 一条记录到redo(重做),存储前滚信息
  • 另一条到undo(撤销),回滚段,用于事务的撤销回复之前的映像

oracle的查询如何保证数据一致

Oracle只确定数据是否变化,不关心数据是否锁定

posted @ 2021-04-12 16:27  YC-L  阅读(4)  评论(0编辑  收藏