装入数据

通过将数据装入表中,可以提高建立索引的速度。

未建立索引的表

在将数据装入未建立索引的表,然后再创建 etx 索引的情况下,建立索引的速度最快。

预先建立索引的表

在创建索引之前将所有数据都插入到表中通常是不可能的。如果必须将大量的行插入预索引表,那么请将下列操作作为一个事务:收集非索引登台或临时表中的多个行,然后将其插入到主表。

例如,假设预索引表名为 maintab。创建一个名为 stagingtab 的表,该表看起来与 maintab 表极为相似,但是其上没有构建 etx 索引。将一批文档插入到 stagingtab 表中;然后使用类似于以下示例的 INSERT 语句将这些文档插入到 maintab 表中:
BEGIN WORK;
INSERT INTO maintab ... SELECT * FROM stagingtab;
COMMIT WORK;

还可以通过 BEGIN WORK 和 COMMIT WORK 语句在一个事务中封装 INSERT 语句来提高性能;执行此操作允许在 maintab 表上立即采取表锁定,从而避免锁定升级的开销。

在将数据插入到分段 etx 索引中时,如果可以分割数据以与索引分段方案匹配,并且具有多个可用 CPU 以及可运行并发数据装入,那么还可以进一步优化插入吞吐量。

为每个索引分段创建临时表和数据装入进程。每个数据装入进程首先将数据插入到其自己的登台表副本中,然后再将数据插入到目标表中。执行此操作只会影响一个索引分段,并只锁定该分段。附加装入程序可以将数据装入单独的登台表和索引分段中,并利用多个 CPU 系统的并行性。

必须在登台的行数和并行需求之间取得平衡,因为受影响的分段将针对所有其他用户进行锁定,直至完成插入操作并提交事务为止。