Skocz do zawartości

[SQL] MySQL vs. PostgreSQL


Ghost

Recommended Posts

W dniu dzisiejszym, przeszukując internet i szukając pewnego zapytania trafiłem na pewną stronkę, która przypomniała mi zażyłą dyskusję na temat wydajności baz danych. Dyskusja polegała mniej więcej na tym, że konfrontowaliśmy MySQL i PostgreSQL pod względem szybkości. Ralliart (miłośnik wydajności MySQL) przekonywał nas, że MySQL jest najszybsza i nie ma szybszej bazy danych. Jako, że prawdopodobnie jest on w tej dziedzinie bardziej doświadczony ode mnie, uwierzyłem mu na słowo :) Więc wyobraźcie sobie moją reakcję, kiedy zobaczyłem to:

http://matipl.pl/2009/01/07/porownanie-wydajnosci-baz-danych-mysql-postgresql/

Muszę przyznać, że czekam z niecierpliwością na Ralliarta :)

Odnośnik do komentarza
Udostępnij na stronach

Trochę nie profesjonalne wykonanie, bo baza działa na innych zestawach danych, autor w komentarzach tłumaczy się, że zakresy podczas generowania są identyczne, ale to nie zmienia faktu, że nie jest to miarodajne. Też jestem ciekaw co na to powie nasz spec od baz danych Ralliart :)

Odnośnik do komentarza
Udostępnij na stronach

Przyznam, że porównanie samo w sobie średnie i faktycznie jest kilka błędów:

1. Nie ma wartości średnich - są pojedyncze przebiegi, a to akurat nie pozwala na odniesienie się do losowości. Co prawda autor testu napisał, że nic nie robił na komputerze, ale jego antywirus/system może mieć inne zdanie na ten temat

2. Konfiguracja też nie jest jasna - czy bazy danych były zainstalowane osobno czy też pojedynczo? Zasoby systemowe nie są jakoś powalające jak na aktywne bazy danych.

3. Inne tabele za każdym razem - zagranie a'la noob, bo jak porównywać wydajność wyszukiwania przy różnych zakresach znaków? Nie rozumiem idei, a tym bardziej, że wiem jak mało miarodajne są takie testy na liczbach losowych, ze względu na algorytm losowania - powtarzalność jest nieunikniona.

O tym, że MySQL jest słaby bez indeksów wiem nie od dzisiaj i ameryki tutaj nie odkryto, ale skuteczność Postgre bez indeksu też nie jest jakoś powalająca, zwłaszcza gdy weźmiemy pod uwagę wyniki po zaideksowaniu gdzie sytuacja się odwraca. Oczywiście pomijam test z 0,6 mln rekordów bo to jest żadna baza danych - a tym bardziej żaden zakres. Operacje na tabelach po 10-15 mln rekordów byłyby bardziej miarodajne. No i na koniec same zapytania: select from? Proszę was.... spodziewałem się czegoś bardziej wymagającego w stylu cross join który łączy wszystkie rekordy z tabel - to jest dopiero wyzwanie dla bazy danych.

Polecam link umieszczony w blogu: http://www.randombugs.com/linux/mysql-postgresql-benchmarks.html

Test o  wiele bardziej interesujący

Odnośnik do komentarza
Udostępnij na stronach

No nie za bardzo - dużo tam operacji jednorazowych typu utwórz index itd, widać też różnice w operacjach typu transakcyjnego - InnoDB jest zdecydowanie najszybszy (jeden z enginów MySQL). Podobnie niezrozumiała jest powolność Postgre w przypadku bulk_delete - 577 s przy 0,02 s w wypadku MySQL. Generalnie w operacjach powtarzalnych nie ma jednoznacznego zwycięzcy. Najważniejszym kryterium w dobrze bazy danych powinno być jej przeznaczenie. I tak jak już kiedyś Ci mówiłem - gdy chodzi o obsługę wielu klientów na raz MySQL odpowiada najszybciej (co niekoniecznie musi oznaczać najszybsze operacje bazodanowe).

Odnośnik do komentarza
Udostępnij na stronach

Gość
Ten temat jest zamknięty i nie można dodawać odpowiedzi.
×
×
  • Dodaj nową pozycję...