우리 프로젝트에서 Ibatis를 사용하고 있습니다. 쿼리가 처음 실행될 때 느립니다. 그러나 이후 동일한 쿼리 집합이 처음보다 약간 더 빠릅니다. 그렇다면 처음 실행될 때 쿼리가 컴파일됩니까?IBatis에서 쿼리가 사전 컴파일됩니까?
0
A
답변
1
iBbat는 JDBC를 통해 빌드 된 데이터베이스 프레임 워크와 마찬가지로 PreparedStatement
을 사용하여 SQL 쿼리를 실행합니다. Java JDBC tutorial
에서 이것의 장점은 대부분의 경우,이 SQL 문이 바로,이 컴파일 곳 DBMS로 전송 것입니다. 결과적으로 PreparedStatement 객체에는 SQL 문뿐만 아니라 미리 컴파일 된 SQL 문이 포함됩니다.
따라서 미리 컴파일 된 경우 데이터베이스를 사용하고 그렇다면 그렇습니다.
1
컴파일 단계는 SQL 쿼리 실행 흐름의 주요 단계 중 하나라고 덧붙이고 싶습니다. 그냥 db optimizer에 의해 컴파일되고 캐싱되고 이후의 호출은 컴파일 단계를 건너 뜁니다.
+0
컴파일 된 쿼리가 캐시에 얼마나 오래 있습니까? DB 서버가 다시 시작될 때까지? –
그래서 처음 실행하는 동안 DBMS로 컴파일하고 보내고 있습니까? 기본적으로이 Ibatis 쿼리가 시작될 때 또는 처음 실행될 때 컴파일됩니까? –
이것은 런타임에 발생합니다. 쿼리는 DBMS에서 컴파일됩니다. 첫 번째 요청 이후에 호출 할 때마다 DBMS가 쿼리를 컴파일 할 때까지 기다리지 않습니다. 그들은 Java에서 "컴파일"되지 않습니다. 데이터베이스에서 Java 소스 코드 컴파일과 쿼리 컴파일을 혼동하지 마십시오. –
쿼리가 프리 컴파일 된 것으로 간주되는 시간은 얼마나됩니까? DB 서버가 다시 시작될 때까지? –