
Thomas Kyte
事后诸葛亮
深入浅出!
展开
-
9i10g11g编程艺术——并发与多版本控制
1、解释热表上超出期望的I/O 在生产环境中在一个大负载条件下,一个查询使用的I/O比你在测试或开发系统时观察到的I/O要多得多,而你无法解释这一现象。 然后,你再在测试环境中恢复这个生产实例,却发现I/O又降下来了。先从一个非常小的表开始: u1@ORCL> create table t ( x int ); 表已创建。 u1@ORCL> insert into t原创 2013-05-02 17:42:29 · 857 阅读 · 0 评论 -
9i10g11g编程艺术——索引
1、B*树索引 如果在一个数字列上有一个索引,那么从概念上来讲这个结构可能如图: B*树索引中不存在非唯一条目。在一个非唯一索引中,oracle会把rowid作为一个额外的列追加到键上,使得键唯一。例如,如果有一个CREATE INDEX I ON T(X,Y)索引,从概念上讲,它就是CREATE UNIQUE INDEX I ON T(X,Y,ROWID)。在一个唯一索引中,根据原创 2013-05-11 09:43:15 · 938 阅读 · 0 评论 -
9i10g11g编程艺术——过程并行化
你可能经常看到,设计为串行执行的应用(一般是批处理应用)往往类似于以下过程: create or replace procedure serial is begin for x in (select object_id id, object_name text from big_table) loop insert into t2 (id, text原创 2013-05-21 17:20:58 · 893 阅读 · 0 评论 -
9i10g11g编程艺术——数据类型
1、字符串 CHAR是定长字符串,VARCHAR2是变长字符串。 u1@ORCL> create table t 2 ( char_column char(20), 3 varchar2_column varchar2(20) 4 ); 表已创建。 u1@ORCL> insert into t values ( 'Hello Wo原创 2013-05-14 15:47:45 · 853 阅读 · 0 评论 -
9i10g11g编程艺术——锁和闩
1、锁类型 oracle中主要有3中类型锁: DML锁(DML lock):DML代表数据操作语言。一般来讲,这表示select、insert、update、merge和delete语句。DML锁机制允许并发执行数据修改。例如,DML锁可能是特定数据行上的锁,或者是锁定表中所有行的表级锁。 DDL锁(DDL lock):DDL代表数据定义语言,如create和alter语句等。DDL原创 2013-04-30 17:05:45 · 1339 阅读 · 0 评论 -
9i10g11g编程艺术——事务
1、在循环中提交 这样做的两个主要原因是: 频繁的提交大量小事务比处理和提交一个大事务更快,也更高效。 没有足够的undo空间。 a、性能影响 u1@ORCL> drop table t; 表已删除。 u1@ORCL> create table t as select * from all_objects; 表已创建。 u1@ORCL> exec db原创 2013-05-07 11:30:05 · 699 阅读 · 0 评论 -
9i10g11g编程艺术——redo与undo
1、查看undo生成的具体情况 (1)创建一个空表。 (2)对它做一个全表扫描,观察读表所执行的I/O数量。 (3)在表中填入许多行(但没有提交)。 (4)回滚这个工作,并撤销。 (5)再次进行全表扫描,观察所执行的I/O数量。 u1@ORCL> alter session set deferred_segment_creation = false;原创 2013-05-09 15:15:05 · 891 阅读 · 0 评论 -
9i10g11g编程艺术——分区
一、表分区机制 行移动的开销比正常的update昂贵得多。因此,如果构建的系统会频繁修改分区键,而且这种修改会导致分区移动,这实在是一个糟糕的设计决策。 1、区间分区 分区区间是严格小于某个值而不是小于或等于某个值。 CREATE TABLE range_example ( range_key_column date , data varchar原创 2013-05-21 17:18:13 · 988 阅读 · 0 评论