Oracle 小结

1.      要想快速高效开发管理软件必须了解所用数据库的特性。

2.      SQL server 一个很普遍的用法,就是会为每个sql语句建立一次连接。但是在oracle中,无论执行多少sql都希望只建立一个连接。

3.      在开发过程中,尽可能的使用绑定变量,对于同一个sql语句绑定变量后,oracle直接使用已解析的查询计划(软解析)。直接绑定变量的sql语句需要重新解析(硬解析),效率低。硬解析消耗资源比较多,有时会减少数据库系统能支持的用户数。(latchingx定机制))。

4.      oracle锁定策略

oracle只在修改是才对数据加行级锁。

如果只是对数据,oracle绝不会对数据加锁。

写入器不会阻塞读取器。

操作同一行数据时,写入器才会被写入器阻塞。

5.      oracle采用了一种多版本、读一致的并发模型。例如:在一个查询上创建一个游标。然后讲查询的表格中数据全部删除并提交,遍历游标查询的结果还在。

6.      oracle中有闪回机制,可以指定系统修改号(System change number scn)进行查询。

7.      多版本,读一致的例子:

begin

        for x in (select * from t)

        loop

                      insert into t values (x.username,x.user_id,x.created);

        end loop;

end;

最终执行结果不会无限循环下去。

8.      oraclenullnull既不相等,也不完全不相等。如果需要判断请使用null=null。如果想给一个可能为null值的字段加上B*树索引,请参照下面的例子:select * from t where nvl(x,-1)= nvl(l_some_variable,-1);   create index t_idx on t(nvl(x,-1));

9.      静态sql和动态sql

10.  可以动态的实现检索硬解析的次数:alter session set cursor_shring=force; 但是这样修正会有副作用,内置子函数的常量也会被替换。查询已经使用过的sqlselect sql_text from v$sql where sql_text like ‘select /* tag */’ ;

11.  追加查询计划:sql_trace=true

12.  实例是一组后台进程和共享内存。数据库是磁盘上存储的数据集合。实例在其生存期内只能装在并打开一次数据库。数据库可以由一个或多个实例(使用RAC)装载和打开。

13.  oracle有个一个很大的内存块,称为系统全局区(SGA),功能:(1)维护所有进程需要访问的多种内部数据结构;(2)缓存磁盘上的数据,另外重做数据写至磁盘之前现在这里缓存;(3)保存已解析的sql计划;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值