[SQL] 나는 JDBC 응용 프로그램에서 PreparedStatement.cancel ()를 호출 할 때, 실제로 오라클 데이터베이스에 죽일 수 있습니까?
SQL나는 JDBC 응용 프로그램에서 PreparedStatement.cancel ()를 호출 할 때, 실제로 오라클 데이터베이스에 죽일 수 있습니까?
나는 오라클 10g 데이터베이스에 대해 자바 JDBC의 응용 프로그램을 실행합니다. 나는 쿼리를 실행 한 다음 ()를 실행 ps.executeQuery를 호출 해, PreparedStatement를 설정합니다. 때때로 쿼리 시간이 오래 걸리고, 나는 그것을 죽일해야합니다. 나는 PreparedStatement 오브젝트가 다른 스레드에 액세스 할 수 있으며 ()를 취소 호출합니다.
내 질문이 실제로 데이터베이스에 쿼리를 죽일 않습니다입니까? 아니면 그냥 클라이언트에서 그것을 끊어 않으며, 쿼리는 여전히 오라클의 창자에서 어딘가를 실행?
감사!
해결법
-
==============================
1.대답은 그것의 질 구현 문제라는 것이다. 당신이 Statement.cancel ()에 대한 javadoc에 보면, 그것은 "DBMS 및 드라이버의 양쪽 모두가 SQL 문을 중단하면"그것이 일어날 것이다 말한다.
대답은 그것의 질 구현 문제라는 것이다. 당신이 Statement.cancel ()에 대한 javadoc에 보면, 그것은 "DBMS 및 드라이버의 양쪽 모두가 SQL 문을 중단하면"그것이 일어날 것이다 말한다.
오라클 JDBC 드라이버의 다양한 버전과 내 경험에 의하면, Statement.cancel ()는 당신이 원하는 것 무엇을 할 것으로 보인다. 쿼리가 취소 될 때 즉시 실행을 중지하는 것 같다.
-
==============================
2.내가 아래라고하는 것은 사용의 관찰과 오라클의 추론을 기반으로, 오라클의 내부의 깊은 이해를 바탕으로되지 않도록 유의하시기 바랍니다. 그것의 아무도는 권위로 간주 될 수 없습니다.
내가 아래라고하는 것은 사용의 관찰과 오라클의 추론을 기반으로, 오라클의 내부의 깊은 이해를 바탕으로되지 않도록 유의하시기 바랍니다. 그것의 아무도는 권위로 간주 될 수 없습니다.
무엇이 그들의 첫 번째 단락에서 말했다 ninesided 것은 맞습니다. 그러나 제안 된 테스트를 조심. 모든 장기 실행 오라클 쿼리는 동일합니다. 이 쿼리가 이상 2 단계, 충분한 데이터를 백업 콤바인가 올바른 순서로 행을 반환하는 방법을 알 수있는 첫 번째 위상 및 행 간격을 채워 리턴는에서 계산하지 않았다 것을 두 번째 위상을 평가하는 것 같다 첫 번째 단계. 두 단계 사이에 작품의 부문은 비용 기반 최적화 프로그램의 설정에 의해 영향을 받는다. 예를 들면 모든-행 대 최초의 행.
쿼리가 1 단계에있는 경우 지금의 요청이 최고의 질의 운영을 계속 수단 1 단계의 끝에서 적용 할 대기열 것으로 보인다 취소 할 수 있습니다.
요청 쿼리가 살해 당할 것이다 취소, 2 단계에서 행 움큼에 반환하고, 드라이버를 가정하면 명령을 지원하므로 각 무리 후에는 명령을 적용 할 수 있습니다 취소 할 수 있습니다.
는 JDBC에 대한 사양은 명령은 쿼리가 실행을 중지하지 않기 때문에 명령이 킬 (kill)의 확인을 기다릴 수 또는 시간 제한 및 쿼리가 계속 실행에 반환 할 수 있습니다 경우 어떻게해야 무슨 말을하지 않는 것 취소합니다.
-
==============================
3.그것은 당신이 사용중인 드라이버의 드라이버와 당신이 원하는 일에 순서대로 성명의 취소를 지원하는 데이터베이스 필요를 모두 따라 달라집니다. 오라클은이 기능을 지원하지 않습니다,하지만 당신은 더 확실히 알고 사용하는 특정 드라이버에 대해 알아야 할 것입니다.
그것은 당신이 사용중인 드라이버의 드라이버와 당신이 원하는 일에 순서대로 성명의 취소를 지원하는 데이터베이스 필요를 모두 따라 달라집니다. 오라클은이 기능을 지원하지 않습니다,하지만 당신은 더 확실히 알고 사용하는 특정 드라이버에 대해 알아야 할 것입니다.
다른 방법으로는 시작과 장기 실행 쿼리를 취소 한 후 데이터베이스를보고 간단한 테스트를 실행할 수 있습니다.
from https://stackoverflow.com/questions/656162/when-i-call-preparedstatement-cancel-in-a-jdbc-application-does-it-actually-k by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL에서 날짜 시간 필드의 시간 부분 (0) | 2020.06.08 |
---|---|
[SQL] 어떻게 PL / SQL에서 기존 테이블에 추가하기 전에 열이 존재하는지 확인? (0) | 2020.06.08 |
[SQL] 여러 열이있는 SQL 피벗 (0) | 2020.06.08 |
[SQL] 오라클 SQL의 SUM 함수가 같은 제품 기능은 무엇입니까? (0) | 2020.06.08 |
[SQL] 나는 SQL 서버의 XML 값에서 요소 이름의 목록을 얻을 수있는 방법 (0) | 2020.06.08 |