下载此文档

开发高性能数据库SQL.doc


文档分类:IT计算机 | 页数:约27页 举报非法文档有奖
1/27
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/27 下载此文档
文档列表 文档介绍
SQL执行顺序
SELECT语句
一般select 语句处理按以下步骤顺序执行:
建立游标。
分析语句。
定义输出:指定位置,类型,结果集的数据类型。
绑定变量:如果查询使用变量的话,Oracle就要知道变量的值。
是否能并行运行(如果有多个服务器时)。
执行查询。
检索出数据。
关闭游标。
DML语句
一般INSERT,UPADTE,DELETE 语句处理执行顺序是:
建立游标(Oracle建立一个隐含的游标。)
分析语句。
绑定变量:如果语句用了变量,Oracle要知道变量的值。
看语句是否能以并行方式运行(如果有多个服务器时)。
执行语句。
通知用户,语句已执行完毕。
关闭游标。
COMMIT语句
当事务提交时,(System Change Number)给事务。号来进行处理。SCN号是记录在控制文件、数据文件、块头及重做日志文件中。
Oracle 在下面情况提交事务:  MIT语句、  执行DDL语句时、 离开Oracle时。
MIT的顺序:
。使改变永久化。
一起写到重做日志文件。
服务器释放表级和行级锁。
MIT完成。
服务器使事务已完成。
ROLLBACK语句
当下面情况发生时,数据库执行回滚: 发出ROLLBACK命令、 服务器进程放弃地终止、 会话被DBA终止。
ORACLE处理ROLLBACK的顺序:
服务器进程不做任何的改变。
服务器释放表级和行级锁。
服务器使事务已完成。
访问表中记录
访问表中记录的方式
ORACLE只有两种访问表中记录的方式:
a. 全表扫描
  全表扫描就是顺序地访问表中每条记录。 ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描。
b. 通过ROWID访问表
  你可以采用基于ROWID的访问方式情况,提高访问表的效率, ROWID包含了表中记录的物理位置信息,ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
SQL对表与索引的可能操作情况
ORACLE的执行一个SQL对表与索引的可能操作情况有三种:
只读表
该情况只出现在全表扫描的情况。
只读索引
该情况只出现在全索引扫描的情况。Oracle对全索引扫描限制为SQL请求的全部列(column)必须驻留在索引树中;也就是说,SELECT和WHERE字句中的所有数据列必须存在于索引中
读取索引和表
最普遍的查询方式,数据库先根据索引查询到满足要求的rowid,再根据rowid查询表。
全表扫描与高水位线
做全表扫描的时候,影响性能最大的不是表内记录数的多少,也不是该表所分配的空间,而是这个表的高水位线下的空间的大小。比如说表A,在创建的时候分配了100M空间,然后在表A内插入数据的时候,表A的高水位线下的空间会逐渐加大;而删除表内的数据的时候,表的高水位线并不会变化,也就是说高水位线下的空间不会减少。随着高水位线的不断上移,以上查询的效率就会越来越低。
解除高水位线过高的处理
移动表所在的表空间,然后再移回原来的表空间
Alter table table_name move tablespace tablespace_name;
缺点:需要足够的空间,并且需要另外一个足够空间的表空间,移动表后需重建该表的索引,需要放在系统空闲时做,会影响业务对该表的使用。
Exp/imp
将该表export后再import
缺点:import前需要将该表drop,需要中断业务,有该表参与的过程,函数等需要进行重编译。
将原表改名后重新建立新表再用insert into select 方式转移数据
缺点:需要中断业务,需要足够的空间,比较移动表空间的方式可以在同一表空间上进行处理;改名时还需要对索引,约束,触发器等进行处理(影响建立新表)
通过create table a as select * from b建立表a保存数据,将表b truncate后将保存的数据用insert into ..select 恢复。
缺点:需要中断业务,需要足够的空间,存在外键时需要先drop外键
表与索引相关的系统对象
dba_tables;
dba_tab_cols;
dba_tab_columns;
ments;
dba_indexes;
dba_ind_columns;
dba_segments;
user_tables;
user_tab_cols;
user_tab_columns;
ments;
use

开发高性能数据库SQL 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数27
  • 收藏数0 收藏
  • 顶次数0
  • 上传人镜花水月
  • 文件大小153 KB
  • 时间2018-10-01