您的位置:网站首页 > Java软件 > 正文

Oracle数据库-事务索引视图优化介绍

类别:Java软件 日期:2018-4-12 2:34:50 人气: 来源:

  本次内容的相关知识点我们在学习sqlserver2008R2的时候介绍过一些,包括:事务、索引、视图等。那么今天我们学习在oracle上实现这些重要的内容,以实现数据库的优化。

  事务是数据处理的核心,是业务上的一个逻辑单元,它能够其中对数据所有的操作,要么全部成功,要么全部失败。DBMS通过事务的管理来协调用户的并发行为,减少用户访问资源的冲突。

  2)显示回滚:当事务遇到ROLLBACK指令时,也将结束事务的执行,但是此时它回滚所有更改的数据到事务开始时的原始值,即取消更改,数据没有变化。

  3)DDL语句:一旦用户执行了DDL(数据定义语言,如create,drop等)语句,则之前的所有DML(数据操作语言)操作作为一个事务提交,这种提交称为隐示提交。

  4)正常结束程序:如果oracle数据库应用程序正常结束,如使用sqlplus工具更改了数据,而正常退出该程序(exit),则oracle自动提交事务。

  1)原则性:以转账操作为例,转出账户余额减少和转入余额增加是两个DML语句,但是必须作为一个不可分割的完整操作。要么同时成功,要么同时失败,只转出而没有转入显然是不可接受的。

  2)一致性:无论是在事务前、事务中、事务后,数据库始终处于一致的状态。例如:转账前分别是2000和1000,总金额是3000,转账300后分别是1700和1300,总金额还是3000.这就叫做一致性。不一致就是在某个时间点查询到的总金额不是3000。

  3)隔离性:在某个时间段,肯定有很多人都在转账,每个人的转账都是在自己的事务中,所以在一个数据库中,会有很多事物同时存在。虽然同时存在很多事物,但是事物之间不会相互影响。

  4)持久性:如果事物提交成功,则数据修改永远生效,如果是回滚,则数据完全没有没修改,就相当于没有这件事情发生。

  Orade提供了一种自动提交DML操作的方式,这样一旦用户执行了DML操作,如UPDATE,DELETE等,数据就会自动提交。

  一旦使用commit命令来结束某个事务,那么就必须数据库不丢失这个事务。在事务进行期间,隔离性的原则要求除了指定会话涉及的用户之外的任何用户都不能查看当前所做的变化。不过事务一旦完成,所有用户都必须能够立即看到所做的变化,同时数据库必须这些变化绝不会丢失。Oracle通过使用日志文件来满足这个需求。日志文件具有两种形式:联机重做日志文件,归档重做日志文件。

  一个正确配置的oracle数据库是不可能丢失数据的。当然用户的错误(包括不恰当的DML或删除对象)也会造成数据的丢失。DDL语句有自动提交功能(create、drop、truncate、alter)

  需要注意的是,Commit:只是用来确认这个数据已经正式的修改了,不一定非得写入硬盘,DBWn什么都不做。执行commit命令时发生的所有物理操作时LGWR进程将日志缓冲区的内容写入磁盘。DBWN进程完全没有执行任何操作。DBWN进程与提交事物处理没有关系,不过最终DBWN进程会将变化的数据块写入磁盘。 commit和rollback语句只应于DML语句,我们无法回滚DDL语句。DDL语句一旦被执行就会立即具有持久状态。

  Oracle数据库对象又称模式对象,数据库对象是逻辑结构的集合,最基本的数据库对象是表,索引也是其中之一。其他数据库对象包括:

  索引是oracle的一个对象,是与表关联的可选结构,提供了一种快速访问数据的途径,提高了数据库检索性能。索引使数据库程序无需对整个表进行扫描,就可以在其中找到所需要的数据。就像书的目录,可以通过目录快速查找所需信息,无需阅读整本书。

  索引的顶部为根,其中包含指向下一级索引的项。下一级为分支块,分支块又指向索引中下一级的块,最低一级的块称为叶节点,其中包含指向表数据行的索引项。叶节点为双向连接,有助于按关键字值得升序和降序扫描索引。

  视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里,视图中的数据是一个或多个实际表中获得的。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。

  2)隐藏的数据的复杂性:一个视图可能是用多表连接定义的,但用户不需要知道多表连接的语句也可以查询数据。

  3)简化的用户的SQL命令:查询视图的时候不需要写出复杂的查询语句,只需要查询视图名称即可。

  5)通过重命名列,从另一个角度提供数据:例如在销售系统中,每日下班前要对当日数据进行汇总,在销售人员眼中,该汇总表成为日销售统计表,在财务人眼中,该销售表成为销售日报表。

  Alias:指定由视图的查询所选择的表达式或列的别名。别名的数目必须与视图所选择的表达式的数目相匹配。

  可以在创建视图时在SELECT语句中使用ORDER BY子句,以便按照特定的顺序进行排序,这样,在查询视图时即使不使用ORDER BY子句,结果集也会按指定的顺序进行排列。

  如果在create view语句中使用FORCE选项,即使存在系列情况,oracle也会创建视图。

  在这些情况下,oracle仅检查create view语句中的语法错误。如果语法正确,将会创建视图,并将视图的定义存在数据字典中。但是,该视图却不能使用。这种视图被认为是“带错误创建”的。可使用SHOW ERRORS VIEW视图名来查看错误。

  

关键词:oracle官网
0
0
0
0
0
0
0
0
下一篇:没有资料

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved