2012-02-29 11 views
13

Szukam sposobu określenia niestandardowego poziomu transakcji w DBX Delphi za pomocą sterownika firebird. Używam Delphi XE.Niestandardowy poziom transakcji w Firefly DBX Delphi

W edytorze parametrów komponentu TSQLConnection mogę ustawić różne wartości TransIsolation i używam wartości domyślnej ReadCommited. Właściwość WaitOnLocks ustawiono na True. Oczekuję tego używa następującej konfiguracji Firebird transakcji, ale nie jestem pewien:

READ WRITE + WAIT + SNAPSHOT (patrz http://www.firebirdsql.org/refdocs/langrefupd20-set-trans.html)

Chciałbym użyć LOCK TIMEOUT [seconds] zamiast WAIT. Ale nie mogę znaleźć, jak lub gdzie to określić. Sprawdziłem w plikach źródłowych DBX i istnieje kod dla niestandardowych poziomów transakcji (wyszukiwanie dla xilCUSTOM), ale wydaje się, że nie został ukończony/nieużywany.

Powodem tego jest fakt, że czasami mamy do czynienia z impasem w naszej aplikacji dla wielu użytkowników i myślę, że dzieje się tak, ponieważ jedna transakcja czeka na inną (prawdopodobnie martwą) transakcję. Wolimy, aby transakcja została przerwana po kilku sekundach, niż całkowite zawieszenie się klienta w nieskończoność.

+1

Następująca dokumentacja 'Dodatkowo, TSQLConnection pozwala określić specyficzne dla bazy danych niestandardowe poziomy izolacji. Indywidualne poziomy izolacji są definiowane przez sterownik dbExpress. Aby uzyskać szczegółowe informacje, zobacz dokumentację sterownika. " – JustMe

+0

Czy rozważasz zakup udokumentowanego sterownika bazy danych? Lub użyć bardziej natywnego rozwiązania, takiego jak IBDAC lub IB Objects (+ wydajność + zgodność + wsparcie)? – JustMe

Odpowiedz

0

Zaledwie kilka centów - Z mojego doświadczenia wynika, że ​​obiekty IBO wymienione przez JustME to bardzo przyzwoita biblioteka. W innym punkcie - zakładam, że próbowałeś ustalić scenariusz, który prowadzi do twojego impasu? Czy jest to sytuacja bardzo nieprzewidywalna? Zastanawiam się, czy masz inne sytuacje, w których WAIT rzeczywiście pozwala aplikacji na przejście do przodu, co może mieć negatywny wpływ, jeśli użyjesz limitu czasu blokady. Wracając do mojego pierwszego komentarza - z firebirdem na ogół lepiej jest używać dedykowanej biblioteki, imho to jest. Mam nadzieję, że zostaniesz posortowany!

Powiązane problemy