Background Image
응용개발
2009.04.15 04:16

jdbc에서 질의 플랜정보 보는 방법

조회 수 16966 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
JDBC 프로그램에서 질의 플랜정보 보는 방법

CUBRID는  JDBC 프로그램에서 질의 플랜을 출력해주는 메소드를 제공한다.
cubrid.conf 설정

플랜이 출력되려면 CUBRID 설정파일인 $CUBRID/conf/cubrid.conf에 optimization_level=513을 추가하고 DB 서버를 재시작하여야 한다.

# Enable Java Stored Procedure
java_stored_procedure=no
optimization_level=513

간단 예제
다음은 질의 플랜을 화면에 출력하는 간단 예제이다.

import java.sql.*;
import cubrid.jdbc.driver.*; //CUBRIDStatement를 사용하기 위해 import 해야 함.
public class getQueryplan{
        public static void main(String arg[]) throws Exception {
                Connection        conn = null;
                ResultSet         rs = null;
                PreparedStatement  pstmt = null;               
                try {
                        Class.forName("cubrid.jdbc.driver.CUBRIDDriver");
                        conn = DriverManager.getConnection("jdbc:cubrid:localhost:53000:demodb:::","","");
                        conn.setAutoCommit(false); //플랜 정보를 가져오기 위해서는 auto commit을 false로 설정해야 함.
                        String sql = "select host_nation from olympic where host_year = ?";
                        pstmt = conn.prepareStatement(sql);
                        pstmt.setInt(1, 2004);
                        ((CUBRIDStatement)pstmt).setQueryInfo(true);                
                        rs = pstmt.executeQuery();
                        String plan = ((CUBRIDStatement)pstmt).getQueryplan(); // 수행한 질의 플랜 정보를 가져오는 메소드.
                        while(rs.next())
                            System.out.println("host_nation : " + rs.getString(1));
                        conn.commit();
                        System.out.println("plan : " + plan);               
                }catch ( SQLException e ) {
                        e.printStackTrace();
                }catch ( Exception e ) {
                        e.printStackTrace();
                }finally {
                        if (rs != null) rs.close();
                        if (pstmt != null) pstmt.close();
                        if (conn != null) conn.close();
                }
        }
}



  • ?
    hwanyseo 2024.08.28 16:38
    아래 예제와 같이 생생된 Statement이용하여 getQueryplan(String sql)을 사용하면
    서버 설정과 관계 없이 plan정보 확인이 가능합니다. (optimization level 514로 변경 후 실행됨.)
    =============================================================================
    public static void main(String arg[]) throws Exception {
    Class.forName(CLASS_NAME);
    Statement stmt = null;

    try (Connection conn = DriverManager.getConnection(CONNECTION_URL)) {
    String sql = "select host_nation from olympic where host_year = 2004";
    stmt = conn.createStatement();

    String plan = ((CUBRIDStatement) stmt).getQueryplan(sql);
    System.out.println("plan : " + plan);
    if (stmt != null) stmt.close();
    if (conn != null) conn.close();

    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    ============================================================================
  • ?
    정만영 2024.09.04 09:48

    위 내용들을 참조해 getQueryplan(sql) 함수로 SQL 플랜정보를 출력하는 자바코드입니다, $CUBRID/conf/cubrid.conf 파일에 optimization_level 설정없이 플랜정보를 확인할 수 있습니다.


    import java.sql.*;

    import cubrid.jdbc.driver.CUBRIDStatement;


    public class QueryPlanExample {

        public static void main(String[] args) throws Exception {

            // JDBC 드라이버 로드

            Class.forName("cubrid.jdbc.driver.CUBRIDDriver");


            // 데이터베이스 연결 설정

            String url = "jdbc:cubrid:localhost:33000:demodb:::";

            String username = "public";

            String password = "";


            Connection conn = null;

            Statement stmt = null;

            ResultSet rs = null;


            try {

                // 데이터베이스 연결

                conn = DriverManager.getConnection(url, username, password);

                conn.setAutoCommit(false); // 플랜 정보를 가져오기 위해 auto commit 비활성화


                // SQL 질의

                String sql = "SELECT host_nation FROM olympic WHERE host_year = 2004";


                // Statement 생성 및 질의 실행

                stmt = conn.createStatement();

                rs = stmt.executeQuery(sql);


                // 질의 플랜 정보 가져오기

                String plan = ((CUBRIDStatement) stmt).getQueryplan(sql);

                System.out.println("Query Plan: " + plan);


                // 결과 출력

                while (rs.next()) {

                    System.out.println("============================================");

                    System.out.println("host_nation: " + rs.getString("host_nation"));

                    System.out.println("============================================");

                }


                // 트랜잭션 커밋

                conn.commit();

            } catch (SQLException e) {

                e.printStackTrace();

            } finally {

                // 리소스 정리

                if (rs != null) rs.close();

                if (stmt != null) stmt.close();

                if (conn != null) conn.close();

            }

        }

    }

     



List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
» 응용개발 jdbc에서 질의 플랜정보 보는 방법 2 손승일 2009.04.15 16966
41 질의작성 스키마에서 한글 사용하는 방법 file seongjoon 2009.04.14 16207
40 CUBRID 매니저 java.lang.OutOfMemoryError 처리 방법 file janus 2009.04.13 18817
39 운영관리 CUBRID 2008 삭제시 제어판에서 삭제되지 않을시 해결법 file seongjoon 2009.04.13 16774
38 응용개발 jdbc에서 bit 데이터 타입 사용하기 손승일 2009.04.11 15943
37 운영관리 데이터베이스 볼륨 자동 증가 설정 남재우 2009.04.01 19817
36 운영관리 큐브리드매니져를 이용한 데이터베이스 자동 백업 남재우 2009.04.01 20325
35 운영관리 CSQL 에서 한글을 입력하는 방법 Prototype 2009.04.01 20348
34 운영관리 CUBRID 2008 삭제시 주의사항 file seongjoon 2009.04.01 16222
33 운영관리 CUBRID 2008 설치시 주의사항 file seongjoon 2009.04.01 18500
32 기타 32bit 리눅스 환경에서 php 모듈 빌드가 되지 않을 경우 Prototype 2009.03.31 18037
31 CUBRID 매니저 UTF8 로 저장된 데이터를 매니저로 조회하는 방법 file Prototype 2009.03.21 26490
30 질의작성 데이터 값 작은 따옴표(') 넣기 정만영 2009.03.20 24798
29 기타 2008.11.18. 최신 우편번호부 with CUBRID file Prototype 2009.03.17 15298
28 질의작성 테이블 데이터 복사 하기 정만영 2009.03.14 23655
27 질의작성 컬럼 사이즈 변경 방법 정만영 2009.03.14 25374
26 CUBRID 매니저 여러 버전의 CUBRID에 CUBRID Manager로 연결하는 방법 일동차렷? 2009.03.14 16289
25 질의작성 다중 row를 하나의 column에 넣기 정만영 2009.03.13 20860
24 질의작성 요일 값을 반환 받을 수 있는 질의 형태 정만영 2009.03.13 18060
23 CUBRID 매니저 CUBRID Manager Client 에러(Java관련). file 윤희서 2009.02.06 25049
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 Next
/ 15

Contact Cubrid

영업문의 070-4077-2112 / 기술문의 070-4077-2148 / 대표전화 070-4077-2110 / Email. contact_at_cubrid.com
Contact Sales