ďťż
 
MVCC: PostgreSQL, Oracle ? =?ISO-8859-2?Q?mo=BFe_jednak_Fire?==?ISO-8859-2?Q?bird_=3F?= ďťż
 
MVCC: PostgreSQL, Oracle ? =?ISO-8859-2?Q?mo=BFe_jednak_Fire?==?ISO-8859-2?Q?bird_=3F?=
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

MVCC: PostgreSQL, Oracle ? =?ISO-8859-2?Q?mo=BFe_jednak_Fire?==?ISO-8859-2?Q?bird_=3F?=



HM - 02-12-2005 11:41
MVCC: PostgreSQL, Oracle ? =?ISO-8859-2?Q?mo=BFe_jednak_Fire?==?ISO-8859-2?Q?bird_=3F?=
  Witam Grupowiczów,

Znalazłem taki dokument:

http://firebird.sourceforge.net/doc/..._vs_oracle.htm

Jest to synteza dwoch whitepaperow - jeden Ibma, drugi Oracla.
Mniej więcej w 2/3 dokumentu jest pokazane zachowanie Oracla9i w
sytuacji dwóch konkurencyjnych transakcji. Ten przykład został
skonstuowany w celu pokazania słabych stron MVCC Oracla.

Goście od Firebirda skonfrontowali z tym scenariuszem swoją bazę (a ja
skonfrontowałem to z PostgreSQLem 8.1 i zachował się tak jak Oracle).

Wychodzi na to że Oracle i PostgreSQL nie zachowują się tak dobrze jak
Firebird. (w sensie data consistency)

Czyżby zatem Firebird był najlepszą implementacją MVCC ? Czy ktoś mógłby
sprawdzić ten scenariusz z SQL Serverem 2005 ?

Hubert





Robert Grabowski - 02-12-2005 11:41

  HM wrote:
> Witam Grupowiczów,
>
[...]

>
> Wychodzi na to że Oracle i PostgreSQL nie zachowują się tak dobrze jak
> Firebird. (w sensie data consistency)
>
> Czyżby zatem Firebird był najlepszą implementacją MVCC ?

Z dokumentu to nie wynika. Posługująć się tym przykładem, aby poprawnie
zarezerować miejsce w samolocie w Orale i PostgreSQLu należałoby zrobić
select for update tego konkretnego rekordu w obu transakcjach i problemu
by nie było. Można też zmienić poziom izolacji traskacji na SERIALIZABLE
i też problemu by nie było.

Widać raport pisał kompletny ignorant, bez wiedzy, w jaki sposób robi
się poprawnie współbieżny dostęp do tych samych rekordów - w
szczególności ich modyfikację. W przypadku opisanym w raporcie, gdy
update rekordu zależy od jego bieżącego stanu, należy przewidzieć
możliwość wyścigu i się przed tym zabezpieczyć używając select for
update lub uerlocks. Należy to robić zawsze, bez względu na aktualne
zachowanie silnika bazy danych. Bez tego typu zabezpieczeń aplikacja
poprawnie działająca na FB 1.5 może na wersji 3.0 zacząć działać tak,
jak na Oracle (jak to opisuje autor).

> Czy ktoś mógłby sprawdzić ten scenariusz z SQL Serverem 2005 ?

W zależności od poziomu izolacji transakcji SQL Server 2005 zachowa się
tak samo, jak Oracle lub Firebird. Chyba.

>
> Hubert

pozdrawiam
Robert Grabowski




HM - 02-12-2005 11:41

  Robert Grabowski wrote:

>> Czyżby zatem Firebird był najlepszą implementacją MVCC ?
> Z dokumentu to nie wynika. Posługująć się tym przykładem, aby poprawnie
> zarezerować miejsce w samolocie w Orale i PostgreSQLu należałoby zrobić
> select for update tego konkretnego rekordu w obu transakcjach i problemu
> by nie było. Można też zmienić poziom izolacji traskacji na SERIALIZABLE
> i też problemu by nie było.

Sprawdzałeś to ? Moim zdaniem izolacja SERIALIZABLE nic tu nie da. i
uwzglednienie "race conditions" jest trudniejsze niż w Firebirdzie.

> Widać raport pisał kompletny ignorant, bez wiedzy, w jaki sposób robi
> się poprawnie współbieżny dostęp do tych samych rekordów - w
> szczególności ich modyfikację.

Ok ignoranci z firmy IBM, uczestniczacy przy produkcji DB2 ;-)

> update rekordu zależy od jego bieżącego stanu, należy przewidzieć
> możliwość wyścigu i się przed tym zabezpieczyć używając select for
> update lub uerlocks. Należy to robić zawsze, bez względu na aktualne
> zachowanie silnika bazy danych. Bez tego typu zabezpieczeń aplikacja
> poprawnie działająca na FB 1.5 może na wersji 3.0 zacząć działać tak,
> jak na Oracle (jak to opisuje autor).

Zauważ że Firebird był robiony od samego początku z MVCC , a nie jak
postgreSQL czy Oracle (od wersji 7 i 8).

>> Czy ktoś mógłby sprawdzić ten scenariusz z SQL Serverem 2005 ?
> W zależności od poziomu izolacji transakcji SQL Server 2005 zachowa się
> tak samo, jak Oracle lub Firebird. Chyba.

Zauważyłeś że pytanie było skierowane do kogoś kto ma SQL Server 2005 i
może to sprawdzić ? ;-)




Robert Grabowski - 03-12-2005 15:50

  HM wrote:
> Robert Grabowski wrote:
>
>>> Czyżby zatem Firebird był najlepszą implementacją MVCC ?
>>
>> Z dokumentu to nie wynika. Posługująć się tym przykładem, aby
>> poprawnie zarezerować miejsce w samolocie w Orale i PostgreSQLu
>> należałoby zrobić select for update tego konkretnego rekordu w obu
>> transakcjach i problemu by nie było. Można też zmienić poziom izolacji
>> traskacji na SERIALIZABLE i też problemu by nie było.
>
>
> Sprawdzałeś to ? Moim zdaniem izolacja SERIALIZABLE nic tu nie da. i
> uwzglednienie "race conditions" jest trudniejsze niż w Firebirdzie.
>
>
>> Widać raport pisał kompletny ignorant, bez wiedzy, w jaki sposób robi
>> się poprawnie współbieżny dostęp do tych samych rekordów - w
>> szczególności ich modyfikację.
>
>
> Ok ignoranci z firmy IBM, uczestniczacy przy produkcji DB2 ;-)
>

Chodziło mi o ten test. Nie ma w nim ani słowa o blokowaniu rekordów,
tabel, ani o poziomie izolacji transakcji. Jak można w tym momencie
pretensje, że serwer bazy danych zrobił to, co mu kazano. Miał zrobić
update tabeli i ją zrobił. Co więcej, pierwsza transakcja na pewno
zablokowała rekord przy update, ale już przy commit rekord został
zwolniony i druga transakcji mogła spokojnie go zmodyfikować.

[...]

>
> Zauważ że Firebird był robiony od samego początku z MVCC , a nie jak
> postgreSQL czy Oracle (od wersji 7 i 8).
>

Być może. Nie wnikam w to. Chciałem tylko napisać, że przytoczony w tym
raporcie przykład nie pokazuje wyższości jednej bazy nad drugą, gdyż nie
jest napisany zgodnie z podstawowymi zasadami - brak blokowania rekordów.

>>> Czy ktoś mógłby sprawdzić ten scenariusz z SQL Serverem 2005 ?
>>
>> W zależności od poziomu izolacji transakcji SQL Server 2005 zachowa
>> się tak samo, jak Oracle lub Firebird. Chyba.
>
>
> Zauważyłeś że pytanie było skierowane do kogoś kto ma SQL Server 2005 i
> może to sprawdzić ? ;-)

W zależności od wybranego poziomu izolacji transakcji w MSSQL 2005 masz
MVCC lub nie. Chyba. :)

pozdrawiam
Robert Grabowski





Grzegorz Szyszlo - 03-12-2005 15:50

  Robert Grabowski napisał(a):

> Z dokumentu to nie wynika. Posługująć się tym przykładem, aby poprawnie
> zarezerować miejsce w samolocie w Orale i PostgreSQLu należałoby zrobić
> select for update tego konkretnego rekordu w obu transakcjach i problemu
> by nie było. Można też zmienić poziom izolacji traskacji na SERIALIZABLE
> i też problemu by nie było.

przeciez serializable to ostatnia brzytwa ratunku ;)
w systemach sprawozdawczych jak najbardziej. ale w systemach
gdzie pracuje masa userow, wymagajacych jak najszybszego dostepu
do danych i jak najkrotszych blokad?

co do reszty zgoda.
co do MS SQL, tutaj wystepuje problem transakcji przez blokady,
przez co napisanie systemu produkcyjnego, w ktorym by bez
wiekszych problemow dzialaly roznego rodzaju raportowania
na dlugich transakcjach na biezacych danych, jest prawdziwym
wyzwaniem, czesto uwienczonym porażką.

znik.




Robert Grabowski - 03-12-2005 15:50

  HM wrote:
> Robert Grabowski wrote:
>
>>> Czyżby zatem Firebird był najlepszą implementacją MVCC ?
>>
[...]

>
> Sprawdzałeś to ? Moim zdaniem izolacja SERIALIZABLE nic tu nie da. i
> uwzglednienie "race conditions" jest trudniejsze niż w Firebirdzie.
>

Właśnie to sprawidzłem. Przy izolacji transakcji serializable w
drugiej transakcji test wywalił się na punkcie 6, tak samo, jak w FB.
Zapewniem Ci, że w Oracle będzie tak samo.

Pytanie, jaki poziom izolacji transakcji, jak wykonywano testy w FB?

pozdrawiam
Robert Grabowski




Robert Grabowski - 03-12-2005 15:50

  Grzegorz Szyszlo wrote:
> Robert Grabowski napisał(a):
>
[...]

>
> przeciez serializable to ostatnia brzytwa ratunku ;)
> w systemach sprawozdawczych jak najbardziej. ale w systemach
> gdzie pracuje masa userow, wymagajacych jak najszybszego dostepu
> do danych i jak najkrotszych blokad?
>

Ja serializable podałem Tu, jak jedno z rozwiązań - jednym z
najgorszych. Czasami lepiej jest użyć serializable i przy zgłoszeniu
błędu "could not serialize access due to concurrent update" ponowić
wykonanie operacji.

Za to zupełnie bezpiecznie mona używać w postgresql'u serializable
dla transakcji, które tylko czytają dane z bazy - chyba, że nie? :)

pozdrawiam
Robert Grabowski




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 03-12-2005 15:51

  HM wrote:
> Witam Grupowiczów,
>
> Znalazłem taki dokument:
>
> http://firebird.sourceforge.net/doc/..._vs_oracle.htm
>
> Jest to synteza dwoch whitepaperow - jeden Ibma, drugi Oracla.
> Mniej więcej w 2/3 dokumentu jest pokazane zachowanie Oracla9i w
> sytuacji dwóch konkurencyjnych transakcji. Ten przykład został
> skonstuowany w celu pokazania słabych stron MVCC Oracla.
>
> Goście od Firebirda skonfrontowali z tym scenariuszem swoją bazę (a ja
> skonfrontowałem to z PostgreSQLem 8.1 i zachował się tak jak Oracle).

No u mnie na 8.0 działa jak najbardziej poprawnie. Mógłbyś podać co robisz?

--
P.M.




Ronald Kuczek - 03-12-2005 15:51

  Użytkownik HM napisał:
> Witam Grupowiczów,
>
> Znalazłem taki dokument:
>
> http://firebird.sourceforge.net/doc/..._vs_oracle.htm
>
> Jest to synteza dwoch whitepaperow - jeden Ibma, drugi Oracla.
> Mniej więcej w 2/3 dokumentu jest pokazane zachowanie Oracla9i w
> sytuacji dwóch konkurencyjnych transakcji. Ten przykład został
> skonstuowany w celu pokazania słabych stron MVCC Oracla.
>
> Goście od Firebirda skonfrontowali z tym scenariuszem swoją bazę (a ja
> skonfrontowałem to z PostgreSQLem 8.1 i zachował się tak jak Oracle).
>
> Wychodzi na to że Oracle i PostgreSQL nie zachowują się tak dobrze jak
> Firebird. (w sensie data consistency)
>
> Czyżby zatem Firebird był najlepszą implementacją MVCC ? Czy ktoś mógłby
> sprawdzić ten scenariusz z SQL Serverem 2005 ?

Cześć,

Jak ktoś nie umie korzystać z Oracle,DB2 albo Postgresa to może popełnić
taki dokument, w innym wypadku to by mu się nie zdarzyło. BTW. MVCC to
jedna z najmocniejszych stron Postgresa, za którą dość drogo płacimy
(vide count performance). Jedna rzecz to fakt - SELECT FOR UPDATE ...
NOWAIT było do wersji 8.1 marzeniem, dzisiaj jest faktem więc nie ma o
co kopii kruszyć. Firebird jest łatwy,lekki i niezły ale porównywanie go
np. do Oracle to grube nieporozumienie, to jakby zestawiać Toyotę
Avensis z Ferrari Testarossa, nie ta klasa. Było nie było - ubogi SQL w
porównaniu choćby z Postgresem (choćby doprowadzający mnie do rozpaczy
brak case when...), performance w porównaniu do choćby Sybase ASA
nietęgi, oj jeszcze musi się ta baza rozwijać ... Jest fajna, niezła,
darmowa ale bez przesady.

Pozdrawiam
Rony




Marcin 'goral' Goralski - 05-12-2005 19:19

  HM wrote:
> Witam Grupowiczów,
>
> Znalazłem taki dokument:
>
> http://firebird.sourceforge.net/doc/..._vs_oracle.htm

Akurat, mowiac malo technicznie, zachowanie Oracle jest jak najbardziej
poprawne. Transakcja 2 nie ma prawa zobaczyc, ze to siedzenie _nie jest
wolne_, poniewaz ani nie zostalo zarezerwowane (brak tego kroku w
transakcji 1), ani tez operacja rezerwacji nie zostala potwierdzona
commitem przed tym, kiedy transakcja 2 zaczela czytac dane.

Nie wnikam juz w blokowanie rekordow, bo napisali to przedmowcy, ale
zasada jest taka, ze wszystkie transakcje widza dane oryginalne (wziete
z rollback segm), dopoki transakcja modyfikujaca dany blok nie zakonczy
sie commitem.

marcin
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... MSSQL Express czy Oracle Express [Oracle, Toad] Zaladowanie obiektu w TOAD [Oracle][Reports30] 10G nie dziala razem z Reports3.0 [Oracle] catalog.sql i catproc.sql - bledy klient oracle (zmiana domyslna klienta oracla) [oracle] [xml] XML na bazie istniejacej struktury ? [Oracle] W jaki sposób skopiować całą zawartość schemy jednego użytkownika do nowo utworzonego użytkownika? klient Oracle 10g SE a Windows 98 SE Oracle Standard Edition One - czym sie rozni od wersji standard iexpress?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • bajkomoda.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com