2009-07-30 13 views
10

Właśnie wstawiłem 1 milion rekordów do prostej tabeli sqlite z pięcioma kolumnami. Zajęło 18 godzin w java, używając sterowników jdbc! Zrobiłem to samo w python2.5 i zajęło to mniej niż minutę. Prędkość dla wybranych zapytań wydaje się być w porządku. Myślę, że to jest problem ze sterownikami jdbc.powolne wstawianie sqlite przy użyciu sterowników jdbc w java

Czy jest szybszy sterownik dla sqlite3 w java?

Szybkość wstawiania dużej liczby wierszy jest ważna dla mojego skryptu migracji schematu i wolałbym nie używać zewnętrznego skryptu do wykonywania migracji, jeśli nie muszę.

EDYCJA: naprawiono za pomocą connection.setAutoCommit (false); dziękuję Markowi Rushakoffowi za podpowiedź do rozwiązania :)

Odpowiedz

19

Czy masz automatyczne zatwierdzenie zapytań? To mogłoby wyjaśnić, dlaczego trwało to tak długo. Spróbuj owijać je na początku/końcu tak, aby nie musiały wykonywać pełnego zatwierdzenia dla każdej wstawki.

This page objaśnia rozpoczęcie/zakończenie transakcji, podczas gdy FAQ dotyka insertów/autocommits.

+0

To się udało, dzięki! –

+0

zwiększona wydajność 1000x ... Dzięki – Ewoks

2

Jeśli chcesz dalej optymalizować, możesz rozważyć grupowanie zapytań wstawianych razem. Więc możesz zmienić 1 milion wkładek na 1000 wkładów z 1000 partii.

Powiązane problemy