,이 JDBC 코드 500-600ms 얻어 타이밍 그러나ScalaQuery의 query/queryNA가 JDBC보다 몇 배 느린가요? 많은 검색어는 다음 성능 테스트에서
val ids = queryNA[String]("select id from account limit 1000").list
val stmt = session.conn.prepareStatement("select * from account where id = ?")
debug.time() {
for (id <- ids) {
stmt.setString(1, id)
stmt.executeQuery().next()
}
}
을 ScalaQuery를 사용하면, 시간 이동에> 2S :
val ids = queryNA[String]("select id from account limit 1000").list
implicit val gr = GetResult(r =>())
val q = query[String,Unit]("select * from account where id = ?")
debug.time() {
for (id <- ids) {
q.first(id)
}
}
디버깅 후에 서버 로그의 경우 PreparedStatement가 반복적으로 준비되고 재사용되지 않기 때문에 발생합니다.
실제로 이것은 우리 애플리케이션 코드에서 성능 문제가 발생했기 때문에 ScalaQuery에서 Prepared Statement를 올바르게 재사용하는 방법과 관련하여 뭔가 빠졌는지 궁금해하고 있습니다. 제안 된 해결 방법.
실제로 실행중인 코드 인 경우 첫 번째 예에서 HotSpot이 루프를 버리는 것이 아니라, 그것은 실제로 명령문을 1000 번 실행한다는 것입니다. – ig0774
멀리 던지지 않음 - executeQuery에는 부작용이 있습니다. – Yang