Trafodion 解决delete慢的问题

来源:互联网 发布:ico转换软件 编辑:程序博客网 时间:2024/06/10 01:47

Trafodion不推荐在单一语句中删除或更新超过10000*n行(n为节点数)。所以在有大的删除或更新时,可能的情况下,应该分成多条语句执行,每条不超过10000*n行。具体语法如下,

delete [first 10000*n] from table_name where ...

如果要按照这种方式实现,可能需要结合for..loop循环删除数据。

除此之外,Trafodion提供另外一种delete数据的方法,语法如下,

delete with no rollback from table_name where ...

[with no rollback]这种方式是利用了HBase快照的特性,因此比普通的delete要快很多,但缺点是目前只能在表上没有索引的情况下执行。如果在有索引的表上执行delete with no rollback from …,则会报以下错误,

*** ERROR[3232] INSERT, UPDATE, or DELETE of table TRAFODION.DONGHANG.TEST1 with dependent Index : TRAFODION.DONGHANG.IDX_TEST1 is not allowed when NO ROLLBACK transaction setting is in effect.*** ERROR[8822] The statement was not prepared.

如果非要在有索引的表上这么做,可以使用以下方法,

alter table table_name disable index index_name;delete with no rollback from table_name;populate index index_name on table_name;

另外,如果要清空表数据的话,可以用purgedata,类似于Oracle中的Truncate,语法如下,

purgedata table_name
1 0
原创粉丝点击