TimesTen的inline和out-of-line数据类型

由于TimesTen的数据类型和Oracle不尽相同,因此有必要了解一下TimesTen的数据类型的概念。
所谓inline, 就是数据存放在页面内的行内,所谓out-of-line,是指数据不和其它的列连续存放,而通过指针存放在页面外。
固定长度的数据类型都是inline的,不可改变。LOB必须是out-of-line,不可改变,大于128字节的VARCHAR2, NVARCHAR2 和 VARBINARY缺省会被定义为out-of-line,但可以在建表时用inline和not inline类型改变。例如

Command> create table test(
       > a int,
       > b char(256),
       > c varchar(256),
       > d varchar(128)
       > );
Command> desc test
       > ;

Table ORACLE.TEST:
  Columns:
    A                               NUMBER (38)
    B                               CHAR (256)
    C                               VARCHAR2 (256) NOT INLINE
    D                               VARCHAR2 (128) INLINE

1 table found.

以下的例子说明了定长的列不可定义为not inline.

Command> create table test(
       >         a int not inline,
       >         b char(256),
       >         c varchar(256) inline,
       >         d varchar(128) not inline
       >         );
 1001: Syntax error in SQL statement: NUMBER type must be inline
The command failed.
Command> create table test(
       >         a int,
       >         b char(256),
       >         c varchar(256) inline,
       >         d varchar(128) not inline
       >         );
Command> desc oracle.test
       > ;

Table ORACLE.TEST:
  Columns:
    A                               NUMBER (38)
    B                               CHAR (256)
    C                               VARCHAR2 (256) INLINE
    D                               VARCHAR2 (128) NOT INLINE

1 table found.
(primary key columns are indicated with *)
Command> 

在MOS Doc ID 2096824.1中指出,inline通常提供较好的性能,而out-of-line则在少数情况下提供空间节省。

你可能感兴趣的:(inline,dataType,timesten,outofline)