建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

chenjiaming

发帖: 20粉丝: 0

级别 : 新手上路

发消息 + 关注

发表于2020年08月11日 16:17:55 286 4
直达本楼层的链接
楼主
显示全部楼层
[最佳实践] 【DWS产品】【JDBC功能】如何在JDBC连接DWS时设置(set)guc参数


        基于DWS进行客户业务调优时经常会识别到部分业务场景需调整数据库guc参数,如果全局调整参数可能会对其他业务场景产生影响,因此需要会话级别调整guc参数,连接DWS业务程序大多通过JDBC与DWS进行数据交互,因此我们可以在业务程序调用JDBC连接数据库时进行数据库参数设置,代码样例如下:

import java.sql.CallableStatement;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class paraset {

  //创建数据库连接。

  public static Connection GetConnection(String username, String passwd) {

    String driver = "org.postgresql.Driver";

    String sourceURL = "jdbc:postgresql://***.***.***.***:25308/postgres";

    Connection conn = null;

    try {

      //加载数据库驱动。

      Class.forName(driver).newInstance();

    } catch (Exception e) {

      e.printStackTrace();

      return null;

    }


    try {

      //创建数据库连接。

      conn = DriverManager.getConnection(sourceURL, username, passwd);

      System.out.println("Connection succeed!");

    } catch (Exception e) {

      e.printStackTrace();

      return null;

    }

    return conn;

  };

  //执行guc 参数设置,并查看设置结果

  public static void ParaSet(Connection conn) {

    Statement stmt = null;

    try {

      stmt = conn.createStatement();

      //set前查看下参数初始值

      ResultSet rs = stmt.executeQuery("select name,setting from pg_settings where name ='enable_index_nestloop'");

      while (rs.next()) {

          System.out.println(rs.getString(1)+" "+rs.getString(2));

          }

      //设置参数为off

      boolean rc = stmt.execute("set enable_index_nestloop=off;");

      System.out.println(rc);

      //设置完成后查看参数是否设置成功

       rs = stmt.executeQuery("select name,setting from pg_settings where name ='enable_index_nestloop'");

      while (rs.next()) {

          System.out.println(rs.getString(1)+" "+rs.getString(2));

          }

          rs.close();

      stmt.close();

    } catch (SQLException e) {

      if (stmt != null) {

        try {

          stmt.close();

        } catch (SQLException e1) {

          e1.printStackTrace();

        }

      }

      e.printStackTrace();

    }

  }

  /**

   * 主程序,逐步调用各静态方法。

   * @param args

  */

  public static void main(String[] args) {

    //创建数据库连接。

    Connection conn = GetConnection("user", "password");

    //设置参数。

    ParaSet(conn);

    //关闭数据库连接。

    try {

      conn.close();

    } catch (SQLException e) {

      e.printStackTrace();

    }

  }

}


执行结果如下:

image.png

举报
分享

分享文章到朋友圈

分享文章到微博

彩虹上的水瓶座

发帖: 75粉丝: 33

级别 : 版主

发消息 + 关注

发表于2020年08月11日 16:44:36
直达本楼层的链接
沙发
显示全部楼层

太有用了,赞一个

点赞 评论 引用 举报

古月磊

发帖: 1粉丝: 0

级别 : 版主

发消息 + 关注

发表于2020年08月11日 17:40:38
直达本楼层的链接
板凳
显示全部楼层

学习了~

点赞 评论 引用 举报

dual

发帖: 54粉丝: 2

级别 : 注册会员

发消息 + 关注

发表于2020年08月11日 17:51:08
直达本楼层的链接
地板
显示全部楼层

不错,收藏了

点赞 评论 引用 举报

gh_qaz

发帖: 11粉丝: 1

级别 : 新手上路

发消息 + 关注

发表于2020年08月11日 19:30:22
直达本楼层的链接
5#
显示全部楼层

学习了,很有用

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册