TimesTen 中也有Partition的概念,但它不同与 Oracle 的 Partition ,而且也没有显示的语法来定义,只是在有些TimesTen的标准文档中提到。如 在TimesTen的系统限制中提到:

Maximum number of partitions in a table 255 255

即每个表的分区数最大为255,但表的分区不是通过类似与Oracle的语法 create table … partition by range … 来创建的,那么它是怎么创建的呢?

在TimesTen的官方文档中提到:当一个表被创建时,它只有一个partition。当 alter table add column 时,一个新的分区就被自动创建,且刚才通过alter table 新增的一列或者多列就被存在新的分区中了。以后即使使用 alter table drop column ,新增加的分区也不会被自动删除。那么当要读取涉及到新分区中的数据的时候,就会比普通的表要多一次读操作,显然,对性能会有一些影响。可以通过下列语句来确定一个表是否有多个分区:

SELECT tblname, sys16 FROM SYS.TABLES;

所以在创建表的时候,最好一次确定下来创建好,而不要通过alter table来修正。当发现一个表的有多个分区时,可以通过ttmigrate /ttrestore 来删除多个分区。

2 Responses to “TimesTen Partition 说明”

  1. MMQ 说:

    这个partition更类似与segment吧

  2. canoe 说:

    有点类似的概念,个人觉得更接近于oracle中的行迁移概念

留言