MySQL' owi mówimy papa 22
Jak zapewne wiadomo Grono.net PostgreSQL’em stoi. Jedynym kawałkiem, który chodził na czymś innym (MySQL) była baza wiadomości między użytkownikami.
Ostatnio przeprowadziliśmy operację zmigrowania jej na PostgreSQL. Udaną operację :)
W chwili obecnej całość działa już na PostgreSQLu, działa ładnie i szybko. Load maszyny z PostgreSQLem jest około 3 krotnie niższy niż load maszyny z MySQL’ em (przy tym samym obciążeniu).
Czym się maszyny różnią? tylko silnikiem bazy danych.
Obie są to dwuprocesorowe xeony 3ghz, z 16GB ramu i macierzą RAID10 z 6 dysków SCSI 72GB 15k rpm.
Wielkość bazy – około 60 gigabajtów w 150 milionach rekordów (i rośnie).
Średni “load” na tej maszynie wynosi ledwie 1.5.
Wychodzi na to, że da się zrobić by PostgreSQL był szybszy i nadal zachować pełną funkcjonalność.

a jednak to prawda … ;> MySQL radzi sobie zle z duzymi tabelami tylko? Gdzie byl najwiekszy zysk? Fajnie by bylo jakby sie pojawila jakas dokladniejsza analiza cos a la ‘case study’, niekoniecznie na tym blogu … ;> Taki inny czarny blog tez moze byc. Orpocz przeniesienia danych tabele ulely jakies zmianie? Jak sobie radzicie z taka iloscia danych, partycjonujecie je w jakis magiczny sposob?
Przyłączam się do prośby powyżej :) Sam zmieniam teraz wszystko z MySQL na PostgreSQL :)
@sinx i @bash3r:
case study nie za bardzo będzie bo nie bardzo jest o czym dużo pisać.
w skrócie – w mysqlu były 2 tabelki w iluśtam bazach (partycjonowane).
w postgresie są 3 tabelki, bez partycjonowania. struktura została praktycznie taka sama – zmiana tyczy się tego, że treść wiadomości została wydzielona do innej tabelki (innej niż pozostałe dane wiadomości).
testowaliśmy partycjonowanie, ale wyszło na to, że danych jest dużo za mało by to się realnie opłaciło.
nie tylko Grono za PostgreSQL’em stoi.
w przypadku serwerow baz danych staz ma niebagatelne znaczenie.
stosowalem PostgreSQL’a w projektach badawczych i dziala bez zarzutu. trudno o bardziej zoptymalizowane algorytmy indexowania (B-tree, GiST) wsrod aplikacji open source.
to co zaobserwowala ekipa grona to fakt. im wieksza baza tym te roznice beda coraz bardziej dostrzegalne.
pgsql ma wiele unikatowych rozwiazan ktorych w mysqlu nie ujrzymy szybko (mozna by dlugo dyskutowac o szczegolach…)
ciesze sie, ze sa ludzie umiejacy realnie spojrzec na sprawe mysql’a i jego wydajnosci. popularne nie znaczy dobre….
Kolego, szkoda ze w powyzszym komentarzu nie wprowadziles nic nowego do dyskusji.
zazwyczaj gdy rozpoczyna sie dyskusja ktory dbms lepszy wybucha nieziemska potyczka na slowa… mnie w strone PgSQL’a sklaniaja nastepujace sprawy
- wiele typow indexow: B-tree,hash,GiST,GIN
- cluster indexy
- dosc sensownie rozwiazane full text search
- dosc sensownie rozwiniete concurrency control a przede wszystkim jednoznaczne podejscie do transakcji (mozliwosc okreslenia tzw. izolacji transakcji)
- konczac w/w temat: mozliwosc dodawania indexu jak i zapis do tablicy w tym samym czasie
- dosc rozbudowany podsystem typow
- duzo wczesniej od mysql’a mial native foreign key
- PgSQL ma jeden dobrze dopracowany storage engine
- architektura PgSQL’a jest przemyslana pod katem uzycia jej do roznych zastosowan co nazwalbym ‘uniwersalnoscia’
- mozliwosc pisania stored procedures w roznych jezykach
- opcja Pluggable Programming Languages
- z prawnego punktu widzenia: licencja PostgreSQL’a jest bardziej developer friendly, co czyni projekt bardziej niezaleznym od trendow na rynku
- zgodnosc z wieloma standardami co czyni projekty pgsql based prostszymi do migracji na platforme DB2 czy Oracle (co nie oznacza, ze migracja jest rzecza prosta, mila i trywialna)
- patrzac oczami zwyklego usera – konsola Postgres’a jest o wiele bardziej user friendly od MySql’owej
- dla admina/developera z pewnoscia na poczatek minusem jest dosc rozbudowana konfiguracja
This is the mail system at host mx.grono.net.
I’m sorry to have to inform you that your message could not be delivered to one or more recipients. It’s attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can delete your own text from the attached returned message.
praca.admin@grono.net>: host dakota.nemo.pl[193.33.58.136] said: 550 5.1.1 User unknown (in reply to RCPT TO command)wezcie sobie ogarnijcie te serwery bo az wstyd:D
@GN:
a skąd taki email? był to email tymczasowy z okazji poszukiwania admina.
w chwili obecnej jest już wyłączony, gdyż admina nie szukamy. na naszych stronach nie widzę nigdzie danych nt. tego emaila – czy mógłbyś powiedzieć gdzie go znalazłeś?
jeśli gdzieś jeszcze występuje ten email – będziemy wdzięczny za wskazanie gdzie – możliwe, że ktoś przeoczył.
dodatkowo – czy pisząc “ogarnijcie te serwery bo az wstyd” chodzi ci o to, że odrzucamy maile do nieistniejących adresów? czy o coś innego? jeśli uważasz, że coś jest źle – będę wdzięczny za konkretniejszą sugestię/narzekanie – z tak ogólnego zdania niestety nie jestem w stanie domyśleć się co dokładnie uważasz, że jest do ogarnięcia.
Chodziło mi o to że jeszcze dwa dni temu było umieszczone ogloszenie o prace administratora. Kolega szukał pracy i postanowił wyslac do was CV. Na poczatku pomyslalem ze to moj serwer zwariowal ale okazalo sie ze gmail to samo powiedział:D
Teraz patrze że już nie ma tego ogłoszenia wiec nie ma maila:D
Pozdrawiam
Wytłumaczcie mi, jak to jest:
montują macierze z k dysków, zmieniają mysqla na postgresa, kupuja serwery po paredziesiat tysiecy pln, umieja je zlozyc, umieja nimi zarzadzac, tworzą hybrydy do wyszukiwania najkrótszej drogi.
a nie potrafią od 2 lat naprawić tego, że jak probuje zaprosic kogos do znajomych to mi się pojawia:
“Nie możesz już zaprosić kolejnej osoby do znajomości! Musisz poczekać aż aktualne zaproszenia zostaną rozpatrzone przez ich adresatów”
a na liscie nie mam ani jednego zaproszenia do rozpatrzenia.
LOL
bledy zdarzaja sie nawet w najdoskonalszym oprogramowaniu..
sam pracuje w instytucji zajmuajcej sie finansami i bledy w sofcie to codziennosci, mniejsze, wieksze… developerzy nie sa doskonali:)
szkoda, ze ekipa Grona nie chce stworzyc np. prostej bugzilli, gdzie moznaby raportowac podobne sprawy … ulatwiloby to zycie Userom
jak kolwiek, szczesliwego Nowego Roku 2008 dla wszystkich Gronowiczow:), powodzenia dla ekipy serwisu, odwaliliscie kawal dobrej roboty:)
@matt, ok, ja nie wymagam bezbłednej aplikacji – ja chciabym aby przez 2 lata ktos jednak znalazł czas i mi naprawił coś co mam popsute :)
wlasnie, to efekt braku systemu raportowania bledow… nawet w najprostszym wydaniu
kolejny bug, ktory tez pokutuje od jakiegos czasu (wystepuje nie za czesto, ale zdaza sie):
+ po kliknieciu na miniaturke fotki w galerii dostaje redirecta na strone glowna
no niby jest system raportowania bledow, nawet ticet sie wlasny dostaje – ale jakość i spychologia pozostawia wiele do zyczenia.
jak chcesz to Ci wkleje konwersację miedzy mną a supportem… :/
pranie brudów na blogu jest troche unfair …
jak komus nie zalezy… trudno, nie nasza strata
tak, ale czasem z bezsilnosci chwytamy sie roznych rzeczy.
od 2 lat nie moge zapraszac znajomych, ja rozumiem ze korzystam z free serwisu, i bledy moga sie zdarzyc a serwis nie musi ich naprawiac, zglaszalem tez bledy jako gronowladny – fakt – odpowiedzi przychodzily szybciej ;)
ale to co mnie strasznie drazni to jakies absurdalne rady typu ‘zresetuj komputer’ :] studiuje z pasją informatykę, w nie bylejakiej szkole, i tego typu rady sprowadzaja mnie do parteru, bo wiem, ze to za chiny nie zadziala i nie tu lezy blad …
podaj swoje ID
Mam prośbę. Mogli byście napisać notatkę o cache w gronie ? W tak dużym portalu i tylu zapytaniach do bazy musi to byc konkretnie rozwiązane.
podaje swoje ID: 55060
kto mi to naprawi jest fajny :)
cyt: w postgresie są 3 tabelki, bez partycjonowania. struktura została praktycznie taka sama – zmiana tyczy się tego, że treść wiadomości została wydzielona do innej tabelki (innej niż pozostałe dane wiadomości).
samo rozdzielenie tego w mysql’u zwieksza jego wydajnosc (wielokrotnie) – przekonalem sie na bazie 2mln wierszy, wiec przy waszej wielkosci przyrost predkosci bylby jeszcze wiekszy (wyszukiwanie odpowiednich msg odbywa sie wtedy przy obliczaniu stalej dlugosci elementu tabeli, bez uwzgledniania kolumn o roznej dlugosci). taka zmiana wplynela na roznice wydajnosci.
Tytuł tego posta przeszedł chyba do historii ;)