* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS | Linux 64bit |
CUBRID Ver. | 11.3 |
CUBRID TOOL Ver. | cubrid manager 10.1 |
응용 환경(API) | java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
11.3 환경으로 서비스 오픈 후 이슈 입니다.
바인드 변수 처리 된 쿼리로 서비스를 운영 중입니다.
cubrid manager , dbeaver, csql 등으로 plan 을 보면 3.4초 수행 되는 쿼리인데,
화면단에서 동일한 쿼리가 200초 수행되는 slow query 로 확인이 됩니다. 실제로 화면에서도 응답이 느립니다.
챗gpt 등으로 검색해 보니 바인드 변수 처리 시 이슈가 있을 수 있다고, 힌트를 적용하라고 해서
의심이 되는 부분은 약 3만건 정도 되는 마스터 코드 테이블에서
코드 조회 부분이 의심되어 pk 타도록 힌트 타도록 소스를 수정해서 화면에서 처리 속도가 개선 되었습니다.
화면단에서 바인드 변수 처리시 이슈가 있는지 확인할 방법은 없는지 문의 드립니다.
애플리케이션에서 바인드 변수만 전달하는 경우, SQL에서 참조되는 데이터의 분포도에 따라 옵티마이저가 예상과 다른 실행 계획(예: 테이블 스캔)을 선택할 수 있습니다.
서비스 오픈 후 발생한 SQL 지연 현상은 CUBRID 11.3 버전 자체의 문제라기보다는, 바인드 변수로 인한 실행 계획 차이로 인해 발생할 수 있는 일반적인 현상으로 판단됩니다.
만약 옵티마이저가 적절한 인덱스를 선택하지 못하는 것으로 판단되면, /*+ USE_IDX(...) */ 또는 INDEX_SS와 같은 명시적 힌트 사용을 고려해보시기 바랍니다.
또한, 추가적인 튜닝이 필요한 SQL이 있는지 확인하기 위해 broker_log_top 명령어를 수행하여 slow query가 더 있는지 점검하고, 지속적으로 서비스 안정화를 위한 모니터링과 조치를 병행하는 것을 권장드립니다.