2012-06-05 4 views
0

내가 본 것에서 플라이 웨이는 일부 명령문과 함께 SQL 파일이 주어지면이를 사용하여 하나씩 실행합니다. (SqlScript.execute()에서 이해할 수있는) 구분 기호로 사용합니다. 이 때문에 원격 서버에 패치를 적용하는 데는 파일의 각 문이 개별적으로 전송되기 때문에 많은 시간이 걸립니다.한 번에 둘 이상의 명령문을 실행

전체 파일을 한 조각으로 보내고 한 번에 적용하여 "일괄 업데이트"를 수행 할 수 있는지 궁금합니다. 아니면 우리가 여기서 고심하는 JDBC 제약 조건일까요?

답변

1

귀하의 관찰이 정확합니다.

현재 Flyway는 단일 명령문으로 파일을 분할 한 다음 JDBC를 사용하여 DBMS로 보냅니다.

일부 DBMS JDBC 드라이버 (예 : H2 및 PostgreSQL)는 실제로 jdbc 호출마다 둘 이상의 명령문을 보내는 것을 기본적으로 지원합니다.

내가 이것을 사용하지 않기로 선택한 이유는 잠재적 인 성능 향상을 위해 오류보고 품질을 교환하기 때문입니다. 게다가이 솔루션은 많은 사용자가 사용할 수 있습니다.

일괄 업데이트는 실제로이 문제에 대한 교차 DBMS 솔루션 일 수 있습니다. 잠재적 인 크기 폭발 및 수익 감소 법칙으로 인해 전체 파일을 일괄 처리하는 것이 이상적인 방법은 아닙니다. 몇 가지 진술을 일괄 처리하면 (예 : 20, 50 또는 그 밖의 스위트 스폿이 중요 함) 유용 할 수 있습니다. 이렇게하면 코드에 너무 많은 영향을 미치지 않습니다. 오류보고 품질 (어떤 명령문이 실패했는지)에 큰 영향을 미치지 않고 성능 향상이 눈에 띄는 경우이를 고려해야합니다.

지원이 필요하면 이슈 트래커에서 이슈를 제기하십시오.

+0

Axel, 신속한 응답을 보내 주셔서 감사합니다! 생성 된 문제 : http://code.google.com/p/flyway/issues/detail?id=274 –

관련 문제