2010-12-15 6 views
0

Capybara에서 Cucumber를 사용할 때 SQL 데이터 덤프에서 테스트 데이터베이스 데이터를로드해야합니다. 불행히도 각 시나리오마다 10 초가 걸리므로 테스트 속도가 느려집니다. http://wiki.postgresql.org/wiki/Binary_Replication_Tutorial#How_to_Replicate롤백 테스트 데이터베이스로 바이너리 복제를 고려하여 SQL 파일에서 데이터베이스가 느리게 복원됩니다.

가 바이너리 복제가 SQL 파일을 사용하여 다음 빨리 될 것입니다 생각하십니까 :

내가 좋아하는 뭔가를 발견?

복원 속도를 높이기 위해 할 수있는 일이 있습니까 (구조체가 아닌 데이터 만 복원합니다).

시도하려면 어떤 방법을 권하고 싶습니까?

답변

2
당신은 "템플릿"데이터베이스로 테스트 데이터를 배치하려고 시도 할 수

(예를 들어 mydb_template)

테스트 시나리오를 준비하려면, 당신은 단순히 DROP DATABASE mydb를 사용하여 데이터베이스를 삭제하고 템플릿을 기반으로 다시 : CREATE DATABASE mydb TEMPLATE = mydb_template;합니다.

물론 예를 들어에 연결해야합니다. template0 또는 postgres 데이터베이스 mydb을 삭제할 수 있습니다.

덤프를 가져 오는 것보다 빠를 것이라고 생각합니다.

이 접근 방식에 대한 PG 메일 링리스트와 9.0으로 수정 된 큰 "템플릿"의 성능 문제에 대해 논의했습니다.

+0

그래, 템플릿의 createdb의 성능은 9.0에서 동작이 끝날 때 모든 fsyncing을 수행하여 상당히 빨라졌습니다. 데이터베이스 생성은 10 초 또는 15 초에서 2 초 (템플릿 db가 거대하지 않았다고 가정)부터 시작되었습니다. –

0

은 (내가 아니라 구조를 단지 데이터를 복원)

COPY 단지 데이터를 가져 오기 위해 항상 빠른입니다. 기타 답변은 전체 데이터베이스를 복원하는 것입니다.