Mirosław Szlendak

Mirosław Szlendak Projektant
programista-Hurtowni
e Danych, BRE Bank
S.A

Temat: Pytanie o wydajność MySql Postgres ?

Witam wszystkich
Mam pytanie do szanownej społeczność bazodanowej.
Mam "mały" projekcik dotyczący serwisu www oraz wykorzystania w niej jakiejś darmowej bazy danych np. MySQL Postgres(z PHP) lub jakieś innej (chętnie posłucham ludzi z doświadczeniem §:-)
Otóż
W moim projekcie zakładam
1. Dość duży ruch w sieci powiedzmy jakieś nawet kilkanaście tysięcy połączeń jednoczesnych do serwisu www w tym i do bazy
2. Rozmiar danych około 60GB
3. Rosnąca ilość użytkowników od 1000 do ok 50 000

Czy jakaś z wyżej wymienionych RDBMS( ew. innych free) jest w stanie spełnić powyższe wymogi ?

Dodam jeszcze iż obecnie znam Oracla (którego nie mogę niestety wykorzystać - nawet Oracle XE z powodu wiadomych ograniczeń)

Nie znam innego silnika bazodanowego od strony praktycznej więc nie wiem czy istnieje możliwość zastosowania np. połączenie kilku baz MySQL/postgres i po sprawie (tak jak np. oracle grid) stąd moje pytania do was.

Interesują mnie też sprawy sprzętowe tzn jaki serwer/y konfiguracje klastry itp.

Dziękuję za wszystkie odpowiedzi i pozdrawiam.
MS
Aleksander Adamowski

Aleksander Adamowski Security Engineer,
Facebook

Temat: Pytanie o wydajność MySql Postgres ?

Niestety nie dostaniesz tutaj gotowego rozwiązania na tacy, bo mało kto robi w takiej skali na bazach opensource. Moim zdaniem powinieneś zrobić to w konfiguracji klastrowej multi master (co eliminuje wariant z PostgreSQL...).

Będziesz musiał zainwestować dużo czasu w techniczne rozpracowanie tematu, ale jeśli chcesz pomocy w obraniu kierunku, to ja bym zasugerował się doświadczeniami Google-a:

http://www.mysql.com/customers/customer.php?id=75

Google wykorzystuje MySQL dla potrzeb AdWords.

Dla własnych potrzeb wzbogacili kod MySQL o bardziej skalowalną obsługę replikacji (korzystając z możliwości stwarzanych przez otwartość jego kodu źródłowego), ponieważ wymagają bezwarunkowej dostępności 24x7 przy milionach użytkowników.

Swoje łaty na kod MySQL oraz własne narzędzia usprawniające zarządzanie swym gigantycznym klastrem opublikowali otwarcie w kwietniu 2007 po pewnym czasie wykorzystywania wewnętrznie:

http://code.google.com/p/google-mysql-tools/w/list

Nie jestem na bieżąco, więc nie wiem, czy łaty te trafiły już do oficjalnego stabilnego wydania MySQL. Jeśli nie, będziesz musiał je zaaplikować ręcznie na kod MySQL-a.

No i oczywiście budowa środowiska (konfiguracja, opracowanie procedur, infrastruktura) jest sprawą nietrywialną.

Natomiast jako pocieszenie powiem tobie, że w takim przypadku nie będziesz musiał specjalnie inwestować w sprzęt klasy korporacyjnej - n.p. dla Oracle RAC musiałbyś zainwestować we współdzieloną pamięć masową, a najprostsza macierz Fibre Channel plus kontrolery HBA, plus (być może) switch FC swoje kosztują.

Tutaj miałbyś możliwość zbudować klaster ze zwykłych elementarnych, wymienialnych PC-tów, tak, jak to robi Google.

Wadą tego rozwiązania jest trudniejsze zarządzanie, brak wsparcia komercyjnego - ze wszystkimi ew. problemami zostajesz sam.

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

A może spróbujesz DB2 Express-C. Jedynymi ograniczeniami są 2 rdzenie i 2GB RAM (aczkolwiek baza uruchamia się na serwerze wykorzystującym większą liczbę rdzeni i RAM).
Docelowo możesz bezproblemowo migrować do edycji komercyjnych DB2.

Więcej informacji znajdziesz na http://ibm.com/db2/express. Chętnie odpowiem na wszystkie pytania.Marcin Molak edytował(a) ten post dnia 23.01.08 o godzinie 10:05

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Aleksander Adamowski:
(MySQL - przyp)
Wadą tego rozwiązania jest trudniejsze zarządzanie, brak wsparcia komercyjnego - ze wszystkimi ew. problemami zostajesz sam.

Chodzi tylko o cluster, tak? Bo MySQL ma przecież wsparcie komercyjne...

Nie robiłem dokładnych testów, ale z tego co widziałem w sieci PostgreSQL ma bogatszą funkcjonalność, bardziej standardową składnie i jest trochę wolniejszy od MySQL. Ale ma też dodatkowe typy indeksów, które mogą się przydać (bitmapowe, full-text).

Jeśli nie jesteś pewien, to zrób rozwiązanie z wymienialną warstwą danych - wtedy będzie można zmienić w razie czego.

Znalezione w sieci testery wydajności:
http://www.opensourcetesting.org/performance.php
MS WAS: http://downloads.zdnet.com/download.aspx?docid=312942
http://dictionary.zdnet.com/definition/stress+testing....
Mirosław Szlendak

Mirosław Szlendak Projektant
programista-Hurtowni
e Danych, BRE Bank
S.A

Temat: Pytanie o wydajność MySql Postgres ?

Aleksander Adamowski:
Niestety nie dostaniesz tutaj gotowego rozwiązania na tacy, bo mało kto robi w takiej skali na bazach opensource.

Rozwiązanie na tacy nie jest tutaj możliwe -wiadomo :-)
Może jednak ktoś jest kto ma doświadczenie z większymi bazami open -source ?
Moim zdaniem powinieneś zrobić to w konfiguracji klastrowej multi master (co eliminuje wariant z PostgreSQL...).

Szkoda słyszałem że Postgres przy większych rozwiązaniach jest wydajniejszy i ma większe możliwośći optymalizacji od MySQL.
Będziesz musiał zainwestować dużo czasu w techniczne rozpracowanie tematu, ale jeśli chcesz pomocy w obraniu kierunku,

Wiem, co mnie jeszcze czeka.
to ja bym zasugerował się doświadczeniami Google-a:

http://www.mysql.com/customers/customer.php?id=75

Google wykorzystuje MySQL dla potrzeb AdWords.

Po pobieżnym zapoznaniu się z tematem wydaję się być całkiem ciekawe ! Dzięki za link.
Natomiast jako pocieszenie powiem tobie, że w takim przypadku nie
będziesz musiał specjalnie inwestować w sprzęt klasy korporacyjnej

Tutaj to może być duży plus -skłaniający do tego rozwiązania.
Wadą tego rozwiązania jest trudniejsze zarządzanie, brak wsparcia komercyjnego - ze wszystkimi ew. problemami zostajesz sam.

Początki są zawsze trudne. Dzięki za poświęcony czas.
Mirosław Szlendak

Mirosław Szlendak Projektant
programista-Hurtowni
e Danych, BRE Bank
S.A

Temat: Pytanie o wydajność MySql Postgres ?

Marcin Molak:
A może spróbujesz DB2 Express-C. Jedynymi ograniczeniami są 2 rdzenie i 2GB RAM (aczkolwiek baza uruchamia się na serwerze wykorzystującym większą liczbę rdzeni i RAM).

Wydaje mi się że 2 GB ram to tutaj trochę za mało
Docelowo możesz bezproblemowo migrować do edycji komercyjnych DB2.
Nie jest to moim celem, wtedy zastanawiałbym sie nad Oraclem -znam i wiem, co potrafi. Tu czekała by mnie dodatkowa nauka , no i koszt :(
odpowiem na wszystkie pytania.

Mimo wszystko dzięki za chęć §:-)

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Skala jest spora, chociaż... dużo zależy na ile dane się będą zmieniać. Z mojego doświadczenia wynika, że memcache rozwiązuje problem z odczytem. Wiadomo, komplikuje to nieco system, ale przynajmniej ten problem daje się ograniczyć.

PG:
Wsparcie dla złożonej logiki w bazie danych.
Transakcyjność, atomowość operacji.
Lepiej radzi sobie ze złożonymi zapytaniami.
Lepszy system uprawnień, monitoringu, lepsze wsparcie dla wprowadzania zmian.

MySQL:
Out of the box - działa lepiej. Czyli zapewnia szybszy start.
W zamian za integralność, traksakcyjność daje szybkość - przy małych zestawach danych, albo jeżeli dane dadzą się podzielić i np. rozrzucić na wiele maszyn.
Jeżeli dane są silnie zdenormalizowane - zdecydowanie MySQL.

Niezależnie od wyboru - trzeba liczyć się z etatem na admina od tego.

Acha jest multi-master dla Postgresa - nazywa się PgCluster. Jest też PgPool,
który potrafi rozłożyć zapytanie na kilka maszyn zebrać od nich dane i przesłać klientowi. Tyle, że do tego zastosowania raczej tego nie polecam.
Aleksander Adamowski

Aleksander Adamowski Security Engineer,
Facebook

Temat: Pytanie o wydajność MySql Postgres ?

Moim zdaniem powinieneś zrobić to w konfiguracji klastrowej multi master (co eliminuje wariant z PostgreSQL...).

Szkoda słyszałem że Postgres przy większych rozwiązaniach jest wydajniejszy i ma większe możliwośći optymalizacji od MySQL.

Niestety nie mogę tu zaoferować twardych danych. Robiłem na Postgresie i na MySQL-u różne systemy, ale nie miałem okazji robić należytej analizy porównawczej (jedna aplikacja, ściśle zdefiniowane obciążenie, powtarzalne testy z użyciem backend-ów PgSQL oraz MySQL - tak to należałoby zrobić aby mieć faktyczne rozeznanie).

Mnie samemu bardziej podoba się PostgreSQL ze względu na przemyślaną architekturę. Faktycznie może być sprawniejszy przy barzdiej złożonych dziedzinach problemowych. Na przykład wyposażony jest w genetyczny optymalizator zapytań, odpalający się automatycznie przy złączaniu powyżej 13 tabel - wykonuje swoją pracę znacznie szybciej, niż klasyczny optymalizator, któremu złożoność obliczeniowa rośnie geometrycznie wraz ze wzrostem ilości złączeń.

PostgreSQL ma też bogaty wybór dedykowanych typów indeksów dla potrzeb rozwiązań GIS, OLAP, oraz przetwarzania danych geometrycznych.

MySQL natomiast wygląda jak zlepek poprawek dodawanych na zasadzie późniejszej refleksji, na przestrzeni ostatnich kilku lat, bez jakiegogkolwiek uprzedniego planu rozwojowego.

Jednak czasami rozwiązania bardziej eleganckie nie sprawdzają się wcale lepiej od tych bałaganiarskich.

Za MySQL przemawia jego wykorzystanie w praktyce przez:

* Livejournal (2 mln. aktywnych użytkowników)
* Wikipedia (przedstawiać chyba nie trzeba)
* Google AdWords
* YouTube
* Digg
* Facebook
* Yahoo! Finance
* Craigslist

Tak więc masz sporo literatury na temat skalowania rozwiązań na nim opartych.
Wadą tego rozwiązania jest trudniejsze zarządzanie, brak wsparcia komercyjnego - ze wszystkimi ew. problemami zostajesz sam.

Początki są zawsze trudne. Dzięki za poświęcony czas.

Jak ktoś słusznie zauważył, na MySQL możesz wykupić komercyjne wsparcie. W przypadku PostgreSQL masz multum małych firm świadczących wsparcie (n.p. dla Europy, łącznie z Polską: http://www.postgresql.org/support/professional_support..., ale w takim przypadku zawsze trudno wybrać kogoś, kto ci da to, czego potrzebujesz.

MySQL daje ci możliwość kupienia wsparcia u samego producenta.

Do tego wykupienie MySQL przez Sun wróży kontunuację wsparcia komercyjnego na przyzwoitym poziomie.

====================

A teraz odpowiedzi dla innych kolegów:

Michał Zaborowski wrote:
Acha jest multi-master dla Postgresa - nazywa się PgCluster.

Jestem tego świadom, ale pominąłem go celowo bo:

* Tworzył go samotnie jeden japończyk, do tego kiepsko znający jęz. angielski, a od czasu jak go testowałem nie wyszło żadne nowe wydanie (tj od roku 2005)
* Replikacja jest oparta na poleceniach, nie na logu transakcji (command/statement-based replication), co stwarzać może problemy. W MySQL masz do wyboru Statement Based Replication, Row Based Replication oraz tryb mieszany Mixed Based Replication.

Piotr Likus wrote:
Jeśli nie jesteś pewien, to zrób rozwiązanie z wymienialną
warstwą danych - wtedy będzie można zmienić w razie czego.

Jesteś jednak świadom, że przy wymienialnej warstwie danych często trzeba rezygnować ze stosowania specyficznych dla danego silnika bazy danych "sztuczek", pozwalających z niego wysupłać dużo dodatkowej wydajności?

N.p. nie skorzystasz z wyszukiwania pełnotekstowego tsearch2 PostgreSQL-a bez użycia kodu SQL specyficznego dla Postgres.

Można co prawda stworzyć warstwę pośrednią na funkcjach/przechowywanych procedurach/widokach, z pewnym umownym "API", ale to ma swój narzut i w zasadzie mnoży pracochłonność przez dwa.

Wiesz, że prekompilowana funkcja zastępująca SELECT-a może wykonać się wolniej od tego SELECT-a bezpośredniego, bo na etapie kompilacji nie są optymalizatorowi zapytań znane statystyki na tabelach z przyszłego momentu wywołania funkcji i może ybrać suboptymalny plan wykonania zapytania (n.p. nierozsądną kolejność złączeń)?

Procedury i funkcje nie zawsze oferują zysk na wydajności.
Tomasz Niewolik

Tomasz Niewolik
Programista/Projekta
nt

Temat: Pytanie o wydajność MySql Postgres ?

Nie tak dawno oglądałem porównanie PG i MySQLa, niestety nie pamiętam linku, ale znalazłem go wpisując w google hasło w stylu "wydajność postgresql".

Zapamiętane przeze mnie wyniki to: MySQL jest szybszy przy małym obciążeniu bazy (mała liczba jednoczesnych połączeń), przy rosnącej jednoczesnej liczbie połączeń MySQL nie daje rady. Jeszcze bardziej jest to widoczne jeśli próbujemy edytować rekordy w wielu połączeniach.

Postgres jest porównywalny w wydajności do baz komercyjnych typu Oracle lub MS SQL, ale niestety trudno znaleźć dokładne zestawienia, gdyż robienie takowych jest niezgodne z umową licencyjną baz komercyjnych. :-(

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Aleksander Adamowski:

Piotr Likus wrote:
Jeśli nie jesteś pewien, to zrób rozwiązanie z wymienialną
warstwą danych - wtedy będzie można zmienić w razie czego.

Jesteś jednak świadom, że przy wymienialnej warstwie danych często trzeba rezygnować ze stosowania specyficznych dla danego silnika bazy danych "sztuczek", pozwalających z niego wysupłać dużo dodatkowej wydajności?

N.p. nie skorzystasz z wyszukiwania pełnotekstowego tsearch2 PostgreSQL-a bez użycia kodu SQL specyficznego dla Postgres.

Nie miałem na myśli uogólniania wszystkich zapytań. Zrobiłbym to raczej w ten sposób (nazwy wymyślone w tej chwili):
- warstwa fizyczna (np. mysql_connect / pg_connect)
- warstwa interfejsu (DataHandler->GetProductsForKeyword())
- warstwa realizująca dane (DataHandlerMySQL, DataHandlerPg)

Program używa warstwy interfejsu (abstrakcyjnej), która realizowana jest przez wybraną warstwę realizującą, np. DataHandlerPg->GetProductsForKeyword().

W ten sposób nie sposób napisać optymalniej zapytania, chyba że zachodzi taka sytuacja, że w jednym systemie bazy opłaca się pętlić po produktach a w drugim po słowach kluczowych. Wtedy trzeba bardziej uogolniać.

Oczywiście to tylko jedna z możliwości, no i na pewno dodanie jakichkolwiek warstw pośredniczących zwalnia proces (w mniejszym lub większym stopniu).

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Panowie mowicie o zielonych ufoludkach a nie o konkretach. Doradzacie koledze tutaj rozwiazania, ktore i tak do rzeczywistosci sie maja nijak.

Podstawowe pytanie brzmi, jaka bedzie architektura bazy.
- Jakiego rodzaju zapytania? (modyfikujace / niemodyfikujace --> czego wiecej)
- Jaki rodzaj silnika bazy? (transakcyjny / nietransakcyjny)
- Czy bedzie full-text? (jezeli tak to warto rozwazyc engine sphinx)

Dodatkowo czy zamierzasz odciazyc baze korzystajac z aplikacji ktore wykorzystuja np. z memcache?

Jak koledzy mowili nie zauwazylem spowolnien pracy bazy MySQL przy wiekszych bazach (np. 200-300GB) i obslugujacych kilkanascie tysiecy kwerend na sekunde.

Srodowisko polecam 64Bitowe i ram oczywiscie im wiecej tym lepiej (minimum to 4GB).
Mirosław Szlendak

Mirosław Szlendak Projektant
programista-Hurtowni
e Danych, BRE Bank
S.A

Temat: Pytanie o wydajność MySql Postgres ?

Grzegorz �.:
Panowie mowicie o zielonych ufoludkach a nie o konkretach. Doradzacie koledze tutaj rozwiazania, ktore i tak do rzeczywistosci sie maja nijak.

Tutaj chciałbym zaznaczyć że projekt jest we wstępnej fazie(zberanie wymagań i przygotowywanie się do fazy projektu architektury. tzn każda informacja w tym wątku może być bardzo pomocna także dziękuję za wszystkie wypowiedzi i sugestie §:-)
Podstawowe pytanie brzmi, jaka bedzie architektura bazy.

To nie jest jeszcze przesądzone.
- Jakiego rodzaju zapytania? (modyfikujace / niemodyfikujace --> czego wiecej)

Napewno więcej odczytów ale w pewnych momentach zapisy mogą stanowić jakieś nawet do 50/70% operacji. Przy standartowym działaniu 60odczyty/40 zapisy myślę.
Czytałem że warto wtedy (jeśli MySql) rozważyć replikację bazy i podział serwerów na zapisy i odczyty coś ktoś wie w praktyce?
- Jaki rodzaj silnika bazy? (transakcyjny / nietransakcyjny)

Tutaj z wiadomych powodów chciałbym mieć silnik transakcyjny chyba że jest jakieś znaczące wydajnościowe uzasadnienie(powiedzmy zysk ponad 30%) przy tym rozmiarze projektu.
- Czy bedzie full-text? (jezeli tak to warto rozwazyc engine sphinx)

Najprawdopodobniej tak. Dzięki nie znam, popatrzę(sphinx).
Dodatkowo czy zamierzasz odciazyc baze korzystajac z aplikacji ktore wykorzystuja np. z memcache?

Z tego co się orientowałem to raczej bez tego było by ciężko więc tak.
Jak koledzy mowili nie zauwazylem spowolnien pracy bazy MySQL przy wiekszych bazach (np. 200-300GB) i obslugujacych kilkanascie tysiecy kwerend na sekunde.

Srodowisko polecam 64Bitowe i ram oczywiscie im wiecej tym lepiej (minimum to 4GB).

Dzięki za posta.

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Mirosław Szlendak:

Napewno więcej odczytów ale w pewnych momentach zapisy mogą stanowić jakieś nawet do 50/70% operacji. Przy standartowym działaniu 60odczyty/40 zapisy myślę.
Czytałem że warto wtedy (jeśli MySql) rozważyć replikację bazy i podział serwerów na zapisy i odczyty coś ktoś wie w praktyce?

Mozna tak zrobic tylko w przypadku zapytan musisz znac ktore modyfikuje a ktore nie. Wiekszy problem mozesz miec w przypadku funkcji/procedur jasno musisz okreslic co i jak. Rozdzielanie mozesz zrobic prosto poprzez php albo bardziej skomplikowanie MySQL Proxy albo LVS.
- Jaki rodzaj silnika bazy? (transakcyjny / nietransakcyjny)

Tutaj z wiadomych powodów chciałbym mieć silnik transakcyjny chyba że jest jakieś znaczące wydajnościowe uzasadnienie(powiedzmy zysk ponad 30%) przy tym rozmiarze projektu.
Przy sortowaniu Myisam jest jest zdecydowanie szybszy, na innodb nie zrobisz indeksow fulltextowych (chyba ze skorzystasz ze sphinxa).
- Czy bedzie full-text? (jezeli tak to warto rozwazyc engine sphinx)

Najprawdopodobniej tak. Dzięki nie znam, popatrzę(sphinx).

punkt wyzej - wtedy albo sphinx albo nietransakcyjne myisam.

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Grzegorz.:
[...]
punkt wyzej - wtedy albo sphinx albo nietransakcyjne myisam.
>
Nie wiem jak jest teraz, ale swego czasu myisam średnio radziło sobie jak szło sporo równoległych zmian w tej samej tabeli.
Z tego co zostało powiedziane - kilka tysięcy połączeń + 40% operacji oznacza modyfikacje... Chętnie się dowiem jak wygląda to teraz.
W przypadku użycia PostgreSQLa:
- pełna atomowość operacji, transakcyjność, więzy integralności.
- optymalne wykorzystanie miejsca na dysku (to, że maksymalnie rekord może zajmować 1 kilo - to nie oznacza, że wszystkie muszą tyle zajmować).
- full text search - jest w standardzie, bez żadnych ograniczeń.

A może z innej strony - dane trzymane zwyczajnie na dysku, żadna baza danych:
http://radar.oreilly.com/archives/2006/04/database_war...
Wszystko zależy od specyfiki projektu.
Marcin Chyłek

Marcin Chyłek Developer - PHP,
Symfony, MySQL,
PostgreSQL, Oracle,
Android

Temat: Pytanie o wydajność MySql Postgres ?

Aleksander Adamowski:
Niestety nie dostaniesz tutaj gotowego rozwiązania na tacy, bo mało kto robi w takiej skali na bazach opensource. Moim zdaniem powinieneś zrobić to w konfiguracji klastrowej multi master (co eliminuje wariant z PostgreSQL...).

Z tymi 2 zdaniami się nie zgodzę osobiście pracuje na bazie gdzie dane siegają tera właśnie przy wykorzystaniu PG. Co do multi master widzę że miałeś na myśli Slony wieć powiem tylko tyle że są alternatywy dla tego oprogramowania które się srawdzają.

Wydaje mi się że każdy rozwiązanie ma swoje plusy jak i minusy, poświęć kilka dni na przetestowaniu i się sam przekonasz.
Aleksander Adamowski

Aleksander Adamowski Security Engineer,
Facebook

Temat: Pytanie o wydajność MySql Postgres ?

Marcin Chyłek:
Z tymi 2 zdaniami się nie zgodzę osobiście pracuje na bazie gdzie dane siegają tera właśnie przy wykorzystaniu PG. Co do multi master widzę że miałeś na myśli Slony wieć powiem tylko tyle że są alternatywy dla tego oprogramowania które się srawdzają.

PgCluster nie rozwijany od 2005 roku? Czy pojawiło się coś nowego? Chyba muszę odświeżyć swoje rozeznanie...

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

Skoro działa to po co zmieniać? http://pgcluster.org/wiki/Example - działa z PG 8.2, więc chyba tak źle nie jest.
PgPool II - też potrafi rozłożyć ruch na kilka serwerów. W zależności od potrzeb można w ten sposób replikować i/lub zrównoleglać dostęp.
plProxy - https://developer.skype.com/SkypeGarage/DbProjects/PlProxy
Green Plum: http://www.greenplum.com/index.php?page=greenplum-data...
EnterpriseDB: http://www.enterprisedb.com/products/index.do

GP i EDB - to komercyjne przedsięwzięcia - mocno pomagają w rozwoju samego PG i sporo rozwiązań przenoszona jest w kolejnych wersjach PG. Chociaż strony zalatują mocnym marketingiem, ale jak ktoś chodzi po stronach MySQLa... Przepraszam, ale tylu niedomówień ciężko jest znaleźć. Niby wszystko jest, ale jak z czymś mają problem to opowiedzą o wszystkim co się da - a ten szczegół przemilczą. Tak, za to ich nie lubię.

Wracając do tematu - rozwiązań jest sporo - wybór zależy od stosunku wielkości projektu do budżetu. MySQL nie potrafi obsłużyć równoległych insertów. Finał jest taki, że przy odpowiednim obciążeniu locki to poważny problem i trzeba umieć rozrzucić dane na kilka serwerów, a potem umieć je zebrać do kupy. Czyli zamiast sporej kasy na maszynę wydaje się kasę i traci czas - na rozwiązanie. Z mojego doświadczenia - ten moment przychodzi zawsze za wcześnie i nikt nie jest na to przygotowany, ale... może inni mają inne doświadczenie. PG skaluje się bardzo dobrze, ale do pewnego momentu. Równoległa praca z kilkoma serwerami oznacza synchronizację między maszynami - i wcale nie wiem, czy nie lepiej iść w stronę macierzy dyskowych. Kasa podobna, efekty również, ale sporo większa niezawodność.
Aleksander Adamowski

Aleksander Adamowski Security Engineer,
Facebook

Temat: Pytanie o wydajność MySql Postgres ?

Michał Z.:
Wracając do tematu - rozwiązań jest sporo - wybór zależy od stosunku wielkości projektu do budżetu. MySQL nie potrafi obsłużyć równoległych insertów. Finał jest taki, że przy odpowiednim obciążeniu locki to poważny problem i trzeba umieć rozrzucić dane na kilka serwerów, a potem umieć je zebrać do kupy.

Interesujące rozwiązanie algorytmiczne problemu rozproszonego przypisywania unikalnych numerów:

http://www.openrowley.com/2007/02/15/numeric-serial-nu...

Zastosowane w Fedora Directory Server. Możnaby zastosować do ulepszenia trybu multimaster MySQL-a...

konto usunięte

Temat: Pytanie o wydajność MySql Postgres ?

PostgreSQL ma coś takiego jak sequence:
http://www.postgresql.org/docs/8.2/static/sql-createse...
To taki obiekt, który jest niezależny od transakcji / sesji - jak ktoś poprosi o kolejną wartość sekwencji to ma pewność, że nikt inny jej nie dostanie. Sequence ma step, czyli realizowany jest podpunkt 2. Można też określić od jakiego miejsca ma startować numeracja na konkretnej maszynie. To rozwiązanie też się pojawiło... W Oracle jest dokładnie tak samo, choć pewnie bardziej sensownie byłoby powiedzieć, że PG ma to zrobione tak jak było to najpierw zaproponowane w Oracle ;)
Marcin Chyłek

Marcin Chyłek Developer - PHP,
Symfony, MySQL,
PostgreSQL, Oracle,
Android

Temat: Pytanie o wydajność MySql Postgres ?

W PG pracowalem na bazie ktora byla wieksza niz 60GB. Wszystko zalezy od indeksow operacji I/O, pamietam ze problemem byly rowniez macieze dyskowe ale dyski na Fibre Channel (o ile dobrze pamietam) zalatwily sprawe splywania do bazy bardzo wielu danych. Odpowiednia ilosc RAMu jest wazna pakujesz > 12BG i to tez Ci przyspiesza. Podonie jak rozlozenie indeksow na rozne tablespace itd. Do tego replikacja. Moim zdaniem 60GB to jak dla PG to malo.

Odnosnie przykladow jakie firmy uzywaja to wszystko stoi w klastrach, dlatego np facebook czy google moze sobie pozwolic na MySQLa (brak wydajnosci oznacza dolozenia sprzetu a jak wiadomo to jest obecnie tanie)



Wyślij zaproszenie do