która baza najszybsza?

0

Witam,
korzystam z bazy firebird 1.53 i aplikacji klient/serwer w Delphi podłączonej do tej bazy przez IBX i bibliotekę gds.dll. Zapuściłem w pętli kilkanaście tysięcy insertów do bazy żeby zaimportować dane z zewnętrznych plików binarnych i wywala mi błędy. Wygląda na to że baza nie daje sobie rady z taką ilością danych w krótkim czasie, jeśli robię to z przerwami to wywala później błąd (więcej danych można zaimportować bez błędu). Zamierzam przenieść się na środowisko .NET i przepisać aplikację na C# i prawdopodobnie MS SQL Server 2005 EE, ale wolałby zaoszczędzić sobie pracy gdy nie przyniesie to poprawy pracy. Proszę o Wasze zdanie jakie rozwiązanie tutaj zastosować.

pozdrawiam

0

Nie wiem jak insertujesz. Kilkanaście tysięcy rekordów to maleństwo.

0

Ja ostatnio dla testów miałem bazę (właściwie to pakowałem dane w tylko jedną tabelę), która miała 400MB i w tabeli było 2400000 rekordów. Wszystko chodziło elegancko, testowane przy około 50 programach jednocześnie robiących inserty, czas pomiędzy insertami dla jednego programu to 0-5 sekund.

Zapewne robisz wszystkie inserty w jednej transakcji a to potrafi wyczerpać zasoby kompa i to dość szybko. W zależności od złożoności insertów należy robić commit co 100-500 insertów i rozpoczynać transakcję na nowo.

BTW czemu nie FB 2?

Jeszcze tylko dodam, że zwalanie własnych błędów na inne programy i próba przesiadania się na te bardziej "wypasione" ale ze starymi błędami wcale ich nie poprawi

0
Misiekd napisał(a)

Jeszcze tylko dodam, że zwalanie własnych błędów na inne programy i próba przesiadania się na te bardziej "wypasione" ale ze starymi błędami wcale ich nie poprawi

[diabel] Dobre.. muszę to sobie zapisać.. Naprawdę błyskotliwe.

0

Inserty wykonywane są w pętli z wykorzystaniem komponentu IBQuery. To są najprostsze inserty do jednej tabeli, pięć pól, jeden indeks założony na trzech polach. Baza miałą 3,5 GB tabela ponad 20 milionów rekordów, ale rozdzieliłem na dwie, jedna bieżąca, druga archiwalna. Podział trochę pomaga. Transakcje są zatwierdzane po każdym rekordzie, pierwotnie rzeczywiście było po zakończeniu insertów. Odstęp między insertami opóźniany programowo od 0-100ms. O Fb2 myślałem, ale doszedłem do wniosku że lepiej poczekać na Fb3 i dostosować program do tego. Zależało mi przede wszystkim na możliwości wykonywania zapytań z wielu baz, niestety nowa wersja trochę się opóźnia. Czy z Waszych wypowiedzi mam rozumieć że zmiana bazy zasadniczo nie wpłynie na wydajność i stabilność?

0

Jeśli masz źle zaprojektowany system importu to zmiana bazy nie pomoże. Przede wszystkim commit po 100-200 insertach (po każdym też nie za bardzo bo bardzo to zwolni), następnie na czas importu możesz wyłączyć indeksy w bazie i przeindeksować dopiero po całym imporcie. Następnie wypadało by podać jakie błędy bo

i wywala mi błędy
niewiele mówi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1