更新时间:2024-06-03 GMT+08:00

Retry管理

Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。

  • 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。

    示例:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    gaussdb=# CREATE OR REPLACE PROCEDURE retry_basic ( IN  x INT) 
    AS  
    BEGIN
    	  INSERT INTO t1 (a) VALUES (x);
    	  INSERT INTO t1 (a) VALUES (x+1);
    END;
    /
    CREATE PROCEDURE
    gaussdb=# CALL retry_basic(1);
    ERROR:  relation "t1" does not exist on datanode
    LINE 1: INSERT INTO t1 (a) VALUES (x)
                        ^
    QUERY:  INSERT INTO t1 (a) VALUES (x)
    CONTEXT:  PL/pgSQL function retry_basic(integer) line 3 at SQL statement