SinoDB数据库的RAW TABLE

  RAW表是不记录日志的永久表,类似于无日志模式数据库中的表。对于RAW表,支持对其进行更新、插入和删除操作,但日志是不会记录这些操作。可以在RAW表上定义索引,但不能在RAW表上定义唯一约束、主键约束或引用约束(referential constraints)。
  无论实在日志模式或者无日志模式的数据库中,RAW表的属性都是一样的。对其进行更新、插入和删除操作都无法可靠地恢复数据。如果RAW表在0级备份后,没有进行数据更新的话,那可以从上次的0级备份中恢复RAW表,仅备份逻辑日志是不足于恢复RAW表。快速恢复可以回滚 STANDARD 表上的不完整事务,但不能回滚 RAW 表上的不完整事务。
  RAW表一般用于数据的初始化加载,可以使用dbexport, LOAD语句等对RAW表进行数据的初始化加载。
  创建RAW表的一个示例如下:

create raw table raw_tab_test (
c1 char(16),
c2 varchar(255),
c2 int
) ;

  另外,在高可用性集群环境中使用 RAW 表时存在一些限制。由于不会记录对 RAW 表所做的修改,并且辅助服务器(包括 HDR、RSS 和 SDS)使用日志记录与主服务器保持同步,因此无法对 RAW 表执行某些操作:

  • 在主服务器上,可以创建、删除和访问 RAW 表。但是,不允许将RAW修改成标准表,或把标准表改为RAW表。在高可用性集群环境中更改表的日志记录模式会产生错误 -19845。
  • 在辅助服务器(HDR、SDS 或 RSS)上,任何操作都无法访问 RAW 表。尝试从 SQL 访问 RAW 表会产生错误 -19846。

PS:把RAW表修改成标准表的语句:ALTER TABLE raw_tab_test TYPE(STANDARD);