云数据库 GAUSSDB-事务

时间:2025-03-14 09:58:02

事务

  • 【规格】大对象操作不支持事务。

    大对象操作包括:创建删除DATABASE、ANALYZE和VACUUM。

  • 【规则】通过JDBC客户端接入时,关闭autocommit参数,显式的执行事务的COMMIT。
    • 一方面,开启autocommit参数,会导致部分参数(如fetchsize)失效。
    • 另一方面,业务应明确业务逻辑,减少对数据库的依赖。
  • 【规则】通过JDBC接入数据库时,避免拼接多条SQL为一条语句发送执行。

    当多条语句拼接为一条语句时,其中一条执行失败后会整体返回失败,不利于定位错误,建议拆分。

    示例:
    • 不符合规则语句:
      Connection conn = ....
      try {
          Statement stmt = null;
          try {
              stmt = conn.createStatement();
              stmt.executeUpdate("CREATE TABLE t1 (a int); DROP TABLE t1");
          } finally {
              stmt.close();
          }
          conn.commit();
      } catch(Exception e) {
         conn.rollback();
      } finally {
         conn.close();
      }
    • 建议拆分成两条语句分别发送:
      Connection conn = ....
      try {
          Statement stmt = null;
          try {
              stmt = conn.createStatement();
              stmt.executeUpdate("CREATE TABLE t1 (a int)");
              stmt.executeUpdate("DROP TABLE t1");
          } finally {
              stmt.close();
          }
          conn.commit();
      } catch(Exception e) {
         conn.rollback();
      } finally {
         conn.close();
      }
support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-45-0122.html
提示

您即将访问非华为云网站,请注意账号财产安全