设为首页 收藏本站
查看: 818|回复: 0

[经验分享] 第一章 开发成功的Oracle应用程序

[复制链接]

尚未签到

发表于 2016-8-4 14:59:32 | 显示全部楼层 |阅读模式
第一章 开发成功的Oracle应用程序
1.3如何开发数据库应用程序
1.3.1理解Oracle的体系结构
1)不要在MTS下运行长事务
  MTS(Multi Threaded Server)体系结构,即一种为了支持多数据库连接需要配置Oracle的一种模式。
  不要在MTS上执行长时间的事务。但实现这种解决办法却不简单。有许多解决问题的办法,但是都需要改变基础体系结构。解决问题最合适的方法,也是需要最少改动的方法是使用高级队列(AQ,Advanced Queue)。
2)使用绑定变量
  select * from emp where empno = 123
  select * from emp where empno = :empno
  分析一个带有硬编码变量的预计将比重用一条已分析过的查询方案花费更长时间和消耗更多的资源。不明显的是前者将减少系统所能支持的用户数量的程度。很明显,部分原因是由于增加资源消耗量,但更主要的因素是由于对库高速缓存的锁存器机制。当硬分析一个查询时,数据库将花费更多的时间支持称为锁存器(latche)的某些低层串行化设备。这些锁存器保护了Oracle共享内存中的数据结构,可以避免被两个用户同时修改和避免当数据进行修改时被用户读取。锁存这些数据结构时间越长越频繁,获得锁存器的队列也就变得越长。这与在MTS下运行长事务独占稀缺资源的情况类似。一个不使用绑定变量的简单小程序将导致其他优化好的应用程序的相关SQL从共享池中抛出。
   如果使用绑定变量,提交引用相同对象的完全相同的查询的人将使用共享池中的编译方案。只需编译子例程一次,就可以重复使用。不仅使用较少的资源,而且可以减少锁存时间,降低锁存频率。
1.3.2理解并行控制
1)实现封锁
Oracle的封锁策略:
(1)只有当修改时,Oracle在行级上锁定数据,不要把锁定上升到块级或表级
(2)Oracle不会为读取而锁定数据
(3)数据的写入不会阻塞数据的读取
(4)只有当另一个数据写入已经锁定了某行数据后,才阻塞其他人对该行数据的写入。
2)多版本
Oracle提供如下的机制:
(1)一致读查询:在某一时刻查询产生一致结果
(2)非阻塞查询:数据写入从来不阻塞查询
1.3.3与数据库无关
生成自增主键:
create table t (pk number primary key,...);
create sequence t_seq;
create trigger t_trigger before insert on t for each row
begin select t_seq.nextval into :new.pk from dual;
end;

编写可移植的程序有两种方式。一种使用JDBC编程,直接使用SQL SELECT、INSERT、update和delete,可能会省去一层抽象。只要将使用的结构限定到要用的数据库所支持的结构,就可以在应用程序中直接使用SQL编码。另一个可移植和提供良好性能的方式,是使用存储过程返回结果集。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252846-1-1.html 上篇帖子: 使用PL/SQL调试Oracle存储过程 下篇帖子: Oracle RMAN备份中catalog和nocatalog区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表