• 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只确定数据是否变化,不关心数据是否锁定

    论读书
    睁开眼,书在面前
    闭上眼,书在心里
  • 相关阅读:
    迭代器求迄今为止所有的闰年
    记录列表中每个元素被访问的次数
    访问修改属性日志
    描述符
    摄氏与华氏转变
    【bzoj1925】[Sdoi2010]地精部落 组合数学+dp
    【bzoj1280】Emmy卖猪pigs 最大流
    【bzoj1449/bzoj2895】[JSOI2009]球队收益/球队预算 费用流
    【bzoj2721】[Violet 5]樱花 数论
    【bzoj4810】[Ynoi2017]由乃的玉米田 莫队算法+STL-bitset
  • 原文地址:https://www.cnblogs.com/YC-L/p/14648542.html
Copyright © 2020-2023  润新知