Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PostgreSQL vs MySQL
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
Stron: 1, 2, 3
FiDO
Ja od siebie dodam, ze przez miesiac wakacji mialem praktyki w pewnej firmie (a potem zostalem jeszcze na dluzej, wiec w sumie prawie cale wakacje tam robilem), ktora nastawiona jest na robienie aplikacji w .NET. Pierwszy raz mialem tam stycznosc z MSSQL'em (wczesniej powazniejsza baze widzialem tylko na laborkach z Oracla, no i kiedys bawilem sie troche PG, bo jeden projekt tego wymagal, ale nie stosowalem nawet wtedy wiekszosci jego funkcji). Bardzo szybko sie go nauczylem, po 2-3 tygodniach grzebania w nim codziennie osiagnalem calkiem niezla plynnosc w pisaniu niekoniecznie prostych procedurek. I co moge powiedziec?
Ze "zakochalem" sie w procedurach skladowanych... zrobilem z pomoca tej bazy podczas calego swojego stazu kilka mniejszych projektow, praktycznie wszystko co moglem zamykalem w procedury i naprawde mi sie to spodobalo. Daja one calkiem spore pole do popisu (aczkolwiek T-SQL'owi z MSSQL'a jeszcze troche brakuje i niektore rzeczy sa trudne do zrobienia, badz niewydajne) i naprawde nie moge sie doczekac mysql'a w wersji 5 (nota bene.. juz jest Release Candidate, nie beta, takze do konca roku chyba bedzie stabilna wersja).
PG jest oczywiscie fajny i ma procedury juz od dawna... ale na jego niekorzysc przemawia niestety mala popularnosc. Gdyby byl u wiekszej ilosci firm hostingowych to napewno wyszloby mu to na dobre. Co z tego, ze ja go sobie moge w domu zainstalowac (co juz zreszta dawno uczynilem, a meczarni troche bylo, bo jeszcze za czasow, kiedy nie bylo wersji natywnej pod windowsa), jesli jest on rzadko spotykany i do wiekszosci projektow stosuje mysqla wlasnie dlatego, ze na serwerze docelowym innej opcji po prostu nie ma.
Dlatego duze nadzieje pokladam w MySQL5, ktory moze to zmienic i w koncu stac sie porzadna i popularna (glownie w sensie wystepowania na serwerach) baza danych.
SongoQ
Cytat
Dlatego duze nadzieje pokladam w MySQL5, ktory moze to zmienic i w koncu stac sie porzadna i popularna (glownie w sensie wystepowania na serwerach) baza danych.


To jest tak jak z windowsem, brakuje lat doswiadczenia. Wspomnialem o procedurach skladowych. Dla mnie tez to jest super sprawa, zamykam wtedy wszysto po stronie bazki, walidacja, autoryzacja i inne rzeczy jakie mi tylko do glowy przyjda. MySQL bedzie zawsze z poslizgiem zawsze bedzie wszystko kopiowane z ORACLE, a nawet z PG wkoncu nie ma co sciemniac to ORACLE jest liderem i tej firmie wszystko zawdzieczamy.
Method
a co tu sie dziwic ze sie przesiadaja. tu klania sie proces pozyskiwania srodkow na zakup odpowiednich serwerow i tyle. platne chociazby mssql daja ci przede wszystkim kilka mozliwosci bakupu, chodz i one nie sa pozbawione wad.

stwierdzenie przelozonych "szybko i tanio" moze kiedys wkoncu trafi do lamusa
no-name
MySQL 5.0 wyszedł... Co zmienia oblicze tej dyskusji smile.gif
SongoQ
Cytat
MySQL 5.0 wyszedł... Co zmienia oblicze tej dyskusji

Czy az tak bardzo zmienia. Dodali zaledwie 3 opcje, zadna mi rewolucja i tak zanim wszyscy się przesiada na ta wersje minie rok moze nawet 2.
sobstel
Cytat(SongoQ @ 2005-12-28 10:06:36)
Cytat
MySQL 5.0 wyszedł... Co zmienia oblicze tej dyskusji

Czy az tak bardzo zmienia. Dodali zaledwie 3 opcje, zadna mi rewolucja

wedlug mnie zmienia, w koncu zazwyczaj jedne z podstawowych wad jakie sie wymienialo w mysql to brak widokow czy triggerow

Cytat
i tak zanim wszyscy się przesiada na ta wersje minie rok moze nawet 2.


ale nie o tym dysksuja kto kiedy sie przesiadzie chyba, no nie? to ze ludzie masowo nie przechodza na postgresql nie odstrasza cie od tej bazy?
SongoQ
Cytat
to ze ludzie masowo nie przechodza na postgresql nie odstrasza cie od tej bazy?

He he no jasne i dlatego tak bardzo lubie PG.

Odnosnie tych vidokow i triggerow masz racje smile.gif
sf
Cytat(sopel @ 2005-12-28 10:31:00)
ale nie o tym dysksuja kto kiedy sie przesiadzie chyba, no nie? to ze ludzie masowo nie przechodza na postgresql nie odstrasza cie od tej bazy?

A po co maja przechodzic? Ci ktorzy znaja zalety postgresa od dawna go uzywaja. Natomiast ludzie, ktorzy nie wiedza co to trigger, nie uzywaja widokow to po co maja przesiasc sie na potgresa? Niech zostana przy mysql bo i tak nie uzywaja dorbrodziejstw niektorych baz danych. Wystarcza im proste zapytania do bazy.
NaturalDisaster
Wiem ze temacik jest PostgerSQL vs MySQL ale ja chciałbym się czegoś dowiedzieć o Firebird (i nie mówie tu o przeglądarce tongue.gif).

Ostatnio szukałem zawzięcie różnic między RDBMS tyou OpenSource i natrafiłem na baze Firebird o której wcześniej nie miałem zielonego pojęcia. Z tego co udało mi się wyszukać to także ma możliwość obsługi wbudowanych procedur, triggerów czy transakcji i jest całkowicie darmowy.
Nie wiem tylko jak to się wszystko ma w praniu. Czy ktoś miał coś do czynienia z tą bazą i jak się ona ma w porównaniu z MySQL czy PostgreSQL?
ferr
Ostatnio zainteresowalem sie szerzej innymi niz MySQL bazami danych. Przeczytalem tez caly ten topic i mam pytanie, mianowicie: potrafilibyscie podac jakies praktyczne przyklady tego, co daja chocby wymienione przez Was "procedury skladowe"? Na czym to polega etc. Gdyby bylo to mozliwe najlepiej na przykladzie zwyklego zapytania obslugujacego listing artykulow..
SongoQ
@ferr Procedura skladowa - co to np piszesz w php mozesz przeniesc na bazke. Najprostrzym przykladem jest dodawanie rekordu.

Np. chcesz dodawac panstwa do bazy danych, w php musisz sprawdzac czy istnieje i ewentualnie zwrocic jego id lub dodac nowe, a tak za pomoca funkcji to wszystko zalatwiasz. Wtedy masz jeden select odwolujacy sie do funkcji ktory zwraca Ci id panstwa. W funkcji masz sprawdzanie czy juz istnieje i dodanie.

Mozesz uzywac do wyliczania roznych wartosci, konwersji itd.
sobstel
Cytat(SongoQ @ 2006-04-22 22:24:15)
@ferr Procedura skladowa - co to np piszesz w php mozesz przeniesc na bazke. (...) Np. chcesz dodawac panstwa do bazy danych (...) Mozesz uzywac do wyliczania roznych wartosci, konwersji itd.

jednym słowem przerzucamy trochę logiki na bazę danych odciążając php.
ferr
Yhm, dzieki..
NetJaro
Witajcie smile.gif

Co na dzień dzisiejszy polecacie pod kątem wydajności? Mozliwości i tak całych nie wykorzysta się, więc stawiam głownie na wydajność. A więc.. na teraźniejszość co lepiej wybrać pod tym kątem?
cadavre
Jakie są różnice składniowe pomiędzy PostgreSQL a MySQL?
Słyszałem, że w PSQL nie można stosować "`" do nazw tabel i jest jakaś różnica z auto_increment. Jakie są różnice w syntax'ie? A bezpieczeństwo?
Sedziwoj
To chyba nie do końca ten wątek...
Co do ` to prawda nie można ich stosować do nazw tabel ale możesz ", a zamiast auto_increment to stosujesz typ serial (dokładnie to jest tylko obudowa, bo możesz ręcznie skonstruować odpowiednią sekwencje)
Tu raczej nie ma różnic, tylko inny zapis.
kufalo
Brak wsparcia dla sortowania przez PostgreSQL pod systemem Windows w innej stronie kodowej niz Windows-1250 całkowicie robi tę baze bezuzyteczną.
Zbłąkany
Litości winksmiley.jpg miałem PostgreSQL 8.1.x pod windows xp i używałem utf-8 i jakoś nie widziałem, aby miał problem z sortowaniem winksmiley.jpg Stąd logiczny wniosek gadasz głupoty tongue.gif
kufalo
Cytat(Zbłąkany)
Litości winksmiley.jpg miałem PostgreSQL 8.1.x pod windows xp i używałem utf-8 i jakoś nie widziałem, aby miał problem z sortowaniem winksmiley.jpg Stąd logiczny wniosek gadasz głupoty tongue.gif


Znalazlem pod adresem:
http://confluence.atlassian.com/display/DO...racter+Encoding
ze:
Cytat
Please note that international characters sets are only fully supported and functional when using PostgreSQL 8.1 and above under Microsoft Windows.


Problemy z tym byly, a bez sortowania ani rusz......
Ale skoro juz to tragiczne niedopatrzenie zostalo naprawione, to chyba ponownie przesiade sie na PostgreSQL.
Chociaz i tak nadal odnosze wrazenie, ze uzywajac tej bazy pod winda mozna sie przejechac...

Cytat(SongoQ)
Warto poswiecić chwilkę na postgresa a konkretnie na plPHP.

A jak to zainstalowac na win, czy moze to juz jest w standardzie przy instalacji postgresql pod winda questionmark.gif
DeadMan
mam pytanie jak zaimportowac plik.txt do tabeli test w ktorej sa 4 kolumny,z lini komend. Chce zeby plik.txt wypelnil puste pola w tych 4 kolumnach. Prosze o pomoc
SongoQ
napisz sobie jakis skrypcik ktory wrzuci jestli to jest sql to zaimportuj. Odnosnie PG i MySQLa konkretnie funkcji skladowych do nadal postres wygrywa ale podejrzewam ze jeszcze z 2lata i ta roznica bedzie w 2 strone, jesli tylko w MySQLu zostanie jezyk proceduralny.
DeadMan
skrypt to ja mam tylko nie wiem jakie polecenie wpisac w PG.
W SQL to by bylo tak -> LOAD DATA LOCAL INFILE "C:/wycieczki.txt" INTO TABLE
wycieczki LINES TERMINATED BY '\r\n' (kraj, ilosc_dni, nazwa_wycieczki, opis_wycieczki);

w PG to nie dziala probowalem zmieniac ale cos mi niewychodzi help me smile.gif
maly_szcz
Witam.
Wątek ma już trochę i dlatego chciałbym spytać, czy ktoś z Was próbował porównywać obecne wersje PostgreSQL i MySQL?


Pozdrawiam.
SongoQ
MySQL szybko sie rozwija i jestem pewny ze rok moze 2 i w mozliwosciach bedzie lepszy od PG. Narazie najwiekszym minusen jest jezyk proceduralny gdzie w Postgresie wiadomo ze jest kilka: plpgsql, java, c, php, ruby, python. Wydaje mi sie ze jesli takie tempo rozmwoju utrzymaja jakie jest teraz moga w malym stopniu podwazyc wartosc ORACLE czy MSSQLa
Ania-678
ym... a MySQL w wersji 5 obsługuje transakcje na blokowanie samych wierszy tak jak postgre? Bo jakoś pewnych informacji w necie nie bardzo można się doszukać...
Jarod
Cytat(SongoQ @ 5.05.2007, 07:40:14 ) *
MySQL szybko sie rozwija i jestem pewny ze rok moze 2 i w mozliwosciach bedzie lepszy od PG.


Masz jakieś konkretne uzasadnienie czy to tylko Twoje przypuszczenia? Bo obecnie wszyscy mówią, że MySQL nie umywa się do PostgreSQLa..
kwiateusz
dogania go, doczekaliśmy się triggerów w wersji 5, zadan wykonywanych co jakis czas.. co nie zmienia faktu ze późno to dodają, a zanim hostingi zrobią migracje na 5 to miną wieki...
SongoQ
Cytat
Masz jakieś konkretne uzasadnienie czy to tylko Twoje przypuszczenia? Bo obecnie wszyscy mówią, że MySQL nie umywa się do PostgreSQLa..

Z tym sie zgodze ze sie nie umywa. Proste porownianie jesli korzystasz z PG tylko i wylacznie uzywajac SQL to o wiele lepszy jest MySQL ale gdzie juz zaczyna sie cos bardziej pogmatwanego gdzie jest wymagane uzycie jezyka proceduralnego w bazie danych to PG niestety ale MySQL bije jak tylko moze z jakiego powodu? Z takiego ze MySQL nie posiada zadnej implementacji jezyka proceduralnego. Obecnie co mozemy spotkac to SQL w procedurach i funkcjach.

Kiedys juz pisalem jaka baza jest najlpesza. Oczywiscie najlepsza jest taka jakie sa wymagania projektu a jakie sa wymagania projektu to juz jest bardziej skomplikowane. Jesli porownujac funkcjonalnosci to oczywiscie ze najlepsza jest ORACLE ale co z tego jak wiekszosc firm, bardzo duzych firma nie tylko w Polsce nie wykorzysta nawet 50% mozliwosci tej bazy.

@Jarod W obecnej pracy siedze tylko i wylacznie w plpgsql czyli Postgres, no i dla takiej rangi projektu MySQL by sobie nie poradzil, wile rzeczy sie dzieje automatycznie po stronie bazy danych (baz danych) nawet mozna powiedziec ze PG jest molo wystarczalny.
Jarod
Cytat(SongoQ @ 18.07.2007, 16:53:58 ) *
(...)Proste porownianie jesli korzystasz z PG tylko i wylacznie uzywajac SQL to o wiele lepszy jest MySQL(...)

Dlaczego tak uważasz?

Cytat(SongoQ @ 18.07.2007, 16:53:58 ) *
(...)ze najlepsza jest ORACLE(...)

Oracle ale do naprawde bardzo dużych baz. Jakiś czas temu natknąłem się na testy wydajności Oracle vs MSSQL. Ten pierwszy był wydajniejszy dopiero przy bardzo dużych bazach. Przy mniejszych MSSQL prowadził.

Cytat(SongoQ @ 18.07.2007, 16:53:58 ) *
@[b]Jarod [/b(...)MySQL by sobie nie poradzil, wile rzeczy sie dzieje automatycznie po stronie bazy danych (baz danych) nawet mozna powiedziec ze PG jest molo wystarczalny.

Podaj jakieś przykłady jakiego typu rzeczy wykonywane są z automatów. Nigdy nie miałem przyjemności pracować przy budowie tego typu (b. dużych) baz. Jestem po prostu ciekawy.

pozdrawiam
SongoQ
Cytat
Dlaczego tak uważasz?

Prostota chyba najbardziej za tym przemawia i popularnosc. Poszukaj sobie testow dla malutkich baz zobaczysz jakie sa rezultaty.

Cytat
Oracle ale do naprawde bardzo dużych baz. Jakiś czas temu natknąłem się na testy wydajności Oracle vs MSSQL. Ten pierwszy był wydajniejszy dopiero przy bardzo dużych bazach. Przy mniejszych MSSQL prowadził.

Z tym to bym sie akurat nie zgodzil. Na Oracle mialem okazje pracowac przez ponad 3 lata uwierz mi ze jesli masz wszystko tak jak trzeba skonfigurowane to jest naprawde szybki. Co do testow to spotkalem sie z zypelnie przeciwnymi.

Cytat
Podaj jakieś przykłady jakiego typu rzeczy wykonywane są z automatów. Nigdy nie miałem przyjemności pracować przy budowie tego typu (b. dużych) baz. Jestem po prostu ciekawy.


Np cos takie jak dodanie do 1 tabeli powoduje mase operacji w innych tabelach, podobnie jak usuwanie i update. Albo inny przyklad monitorowanie zmian rekordow nie wazne czy to robisz przez aplikacje czy recznie masz kazda malusinka zmiane. Takich przykladow moze byc setki, ktore sie dzieja w bazie. Albo dodajesz do 1 baza a automatycznie dane sa replikowane w innych bazach niekoniecznie PG (trafiaja do MSSQL czy ORACLE)

Jesli nie znasz takich rzeczy to radze zakupic pare dobrych ksiazek przeczytac to da troche jasniejszy poglad na mechanizmy baz danych. Obecnie baza danych to nie tylko operacje SQL to rowniez wykorzystanie masy narzedzi jakie oferuje i wile rzeczy napisanych w procedurach skladowanych.
Jarod
@SongoQ: A jak oceniasz triggery i procedury składowane w mysqlu? W manualu mysqla bardzo skromnie napisali o triggerach.
Piniek
Porównanie popularnych silników baz danych

Nazwa MySQL
nazwa licencji: GPL z wyłączeniem FOSS
darmowa do zastosowań komercyjnych: NIE
rozmiar plików ze źródłami:18.5 MB
języki proceduralne:NIE
własne typy danych:NIE
max. liczba kolumn w wierszu:3398
max. rozmiar rekordu:64 KB
max. wielkość BLOB'a (mógly by mi ktos powiedziec co to??):4 GB

Nazwa PostgreSQL 8.0.2
nazwa licencji: BSD
darmowa do zastosowań komercyjnych: TAK
rozmiar plików ze źródłami:10.2 MB
języki proceduralne:TAK
własne typy danych:TAK
max. liczba kolumn w wierszu:w zależności od typu danych od 250 do 1600
max. rozmiar rekordu:1.6 TB
max. wielkość BLOB'a:4 GB

Moze to cos wniesie do dyskusji znalazlem to na wikibooks oto link link

Pozdrawiam mam nadzieje ze pomoglem. Sam sie zastanawiam czego uzywac ;P

I przepraszam za ewntualne błędy ale o 1:47 nie che mi sie poprawiac winksmiley.jpg
northwest
Mam do zrobienia program który będzie zapisywał ok 5.000 rekordów na minutę. Docelowy rozmiar bazy to ok 8Gb.
Dane będą też często zczytywane z bazy z poziomu stron www.
Która baza lepiej nada się do tego projektu (PostgreSQL czy MySQL)questionmark.gif
Sedziwoj
@northwest
Moim zdaniem to post nie jest w odpowiednim miejscu.
Do tego jeśli zapisujesz 5000 rekordów na minutę, to jakim cudem masz określony docelowy rozmiar bazy?
northwest
to jest przypuszczalny - po prostu w pewnym momencie rekordy starsze będą usuwane...
nevt
Witam - to bardzo ciekawy wątek, ale też strasznie przestarzały ...
Może wielu wprowadzić niepotrzebnie w błąd.

Jestem wolnym strzelcem, więc jestem skazany na MySQL, głównie ze względu na popularność w hostingu - chociaż PostgreSQL jest również coraz popularniejsze.
Z drugiej strony - MySQL został przejęty prze SUN i coraz dynamiczniej się rozwija. Ma wszystko co jest potrzebne do małej i średniej skali projektów. A przy naprawdę dużych projektach i tak następuje migracja do profesjonalnych rozwiązań w rodzaju ORACLE.

Ponieważ nie używam w swoich projektach PG - nie mogę sie kompetentnie wypowiadać na jego temat. W związku z tym mam wielką prośbę. Czy ktoś naprawdę zorientowany poświęciłby chwilę swojego cennego czasu i przedstawił tu AKTUALNE zestawienie możliwości oraz różnic między bieżącymi wersjami MySQL i PostgreSQL questionmark.gif

Myślę, że zapewni sobie niemierną wdzięczność setek użytkowników - pomógł gwarantowane smile.gif

PS. Chodzi o coś więcej niż pokazał kolega Piniek - tyle to sobie w wiki znalazłem...

Pozdrawiam wszystkich forumowiczów.
phpion
W odpowiedzi na powyższy post podam link do problemu jaki miałem z MySQL. Chodzi mianowicie o możliwość uruchomienia jednego triggera przy kilku zdarzeniach. W PostgreSQL (i z tego co wiem również w Oracle) robi się to poprzez:
  1. ... AFTER INSERT OR UPDATE OR DELETE ...

Takie coś nie działa w MySQL. Na forum mysql.com otrzymałem jednoznaczną odpowiedź, że nie mogę tak zdefiniować triggera. Równocześnie chciałem założyć 3 osobne triggery uruchamiane przy 3 różnych zdarzeniach. I co? Jajco. A jakie chocki-klocki się działy to zapraszam do lektury postu:
http://forum.php.pl/Trigger_AFTER_INSERT_O...ETE_t96283.html
jezoo
na te stronie: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL sa opisane roznice oraz... ankieta i jak narazie PostgreSQL KROLUJE tongue.gif

mysql: 34% (1119)
PostgreSQL: 66% (2191)

Od siebie smile.gif

ja kiedys musialem stworzy tzw 'klastry' chcialem uruchomic kilka baz osobno na roznych portach i co sie okazalo, w dokumentacji mysql znalazlem iz klaster bazodanowy zaklada sie poprzez 'CREATE DATABASE' co mnie rozbawilo, natomiast w PostgreSQL, co mnie spodobalo sie i w koncu to czego chcialem i oczekiwalem od nie komercyjnej DB, czyli elastycznosc, mozna robic to co sie chce (no moze przesadzilem, ale ja tak to odbieram winksmiley.jpg ) wracajac do klastrow, tworzy sie je w banalny sposob w 3 krokach:
1) stworzenie katalogu
2) zmiana chown;a na postgres i chmod na 700
3) initdb i run
i koniec smile.gif

co jeszcze, w PostgreSQL jest typ INET czyli baza sama sprawdza czy wprowadzana wartosc to adres IP, wartosci walutowe.
jednym slowem, cud miod i orzeszki smile.gif
phpion
Przed chwilą przeprowadziłem wstępne testy wydajnościowe MySQL (5.1.33) vs PostgreSQL (8.3.1). Test opierał się na cyklicznym (10 razy) wykonaniu JOINa dla tabel użytkowników (100 000 rekordów) oraz komentarzy (1 000 000 rekordów). Dane zostały wcześniej wygenerowane losowo w PHP i w każdym przypadku wyglądały tak samo. Na polu komentarz.id_uzytkownika został założony indeks. Poniżej zamiesczam wyniki uzyskane klasą Benchmark z repozytorium PEAR:

MySQL (MyISAM): 0,022767
MySQL (InnoDB): 21,507910
PostgreSQL: 2,500184

Różnice jak widać są zasadnicze... Wnioski?
MyISAM jest bajecznie szybki ale nie oferuje nic ciekawego poza wyszukiwaniem pełnotekstowym. InnoDB miażdży powolnością... PostgreSQL - wydaje się być złotym środkiem smile.gif

Ot taka ciekawostka.
nieraczek
A ciekawe czy MySQL wkrótce nie zakończy istnienia jak Oracle go przejął....
nospor
@phpion

Cytat
Na polu komentarz.id_uzytkownika został założony indeks

A klucz obcy byl tez czy nie?
Mozesz pokazac to zapytanie?
phpion
Cytat(nospor @ 21.05.2009, 08:18:58 ) *
A klucz obcy byl tez czy nie?

Tak. Dla PostgreSQL oraz dla MySQL InnoDB klucz obcy został zdefiniowany. Dla MySQL MyISAM nie robiłem tego z prostej przyczyny: i tak więzy integralności są ignorowane.

Cytat(nospor @ 21.05.2009, 08:18:58 ) *
Mozesz pokazac to zapytanie?

Jasne, ogólnie cały test wyglądał tak:
  1. <?php
  2.  
  3. require_once 'Benchmark/Timer.php';
  4.  
  5. //$db = new PDO('mysql:dbname=test_baz_danych_myisam', 'root', '');
  6. //$db = new PDO('mysql:dbname=test_baz_danych_innodb', 'root', '');
  7. $db = new PDO('pgsql:dbname=test_baz_danych', 'postgres', 'postgres');
  8.  
  9. $timer = new Benchmark_Timer(true);
  10.  
  11.  
  12. for ($i=0; $i<10; $i++) {
  13.    $db->query('SELECT COUNT(*) FROM comment'); // zwraca liczbę 1000000
  14. }
  15.  
  16. $timer->setMarker('COUNT');
  17.  
  18. for ($i=0; $i<10; $i++) {
  19.    $db->query('SELECT * FROM comment JOIN user ON comment.user_id=user.id WHERE comment.user_id=1'); // 13 rekordów
  20. }
  21.  
  22. $timer->setMarker('JOIN');
  23.  
  24. $timer->display();
  25. ?>
nospor
a jak czasowo bedzie to wygladac dla takiego zapytania:
  1. <?php
  2. $db->query('SELECT * FROM user left join comment ON comment.user_id=user.id WHERE user.id=1');
  3. ?>

?

ps: zakladam ze ID to klucze glowne i mają indexy?
phpion
Z tego co się orientuję to dla kluczy głównym nie ma potrzeby zakładania indeksów winksmiley.jpg Swoje zapytanie specjalnie napisałem z użyciem zwykłego indeksu, a nie klucza głównego - żeby było trudniej smile.gif hehe.

Wyniki dla Twojego zapytania (już bez COUNT):
MyISAM: 0.016517
InnoDB: 0.017046
PostgreSQL: 0.006440

Dane uzyskałem po 5 odświeżeniach strony dla każdego przypadku.

Skąd takie różnice w wywołaniach w stosunku do poprzedniego testu? Brakuje tu zapytania z COUNT. Z nim wyniki przedstawiają się już nieco gorzej:
MyISAM: 0.028539
InnoDB: 23.817434
PostgreSQL: 2.852854

Widać więc, że zarówno w przypadku InnoDB jak i PostgreSQL COUNT(*) znacząco wpływa na wydajność zapytania, z czego w przypadku InnoDB bardzo drastycznie.

Na koniec jeszcze wyniki dla COUNT(id) zamiast COUNT(*):
MyISAM: 0.035867
InnoDB: 22.756677
PostgreSQL: 3.391338 <- wynik utrzymywał się na tym poziomie
nospor
no z tym COUNT cos masz bobola jakiegos. zapytanie:
$db->query('SELECT COUNT(*) FROM comment');
nie ma prawa tyle czasu sie wykonywac. Wykonuje je na zdecydowanie wiekszych danych i jest to ulamek sekundy.
phpion
Faktycznie. Sprawdziłem COUNT(*) z poziomu MySQL Query Browser + PgAdminIII i wyniki są zdecydowanie inne:
MyISAM: 0,0296 (0,0011)
InnoDB: 0,0141 (1,8876)
PostgreSQL: 0,375

Czyli co - wina PDO? Zmiana na mysql_connect + mysql_select_db + mysql_query nie przyniosła żadnej poprawy.

Swoją drogą nie bardzo wiem co oznaczają czasy podane przy MySQL. Drugi to chyba faktycznie czas, po jakim pokazywany jest wynik zapytania. Ale pierwszy czas (krótszy dla InnoDB)?
nospor
tak czy siak masz cos na linii php - baza i jako tako nie ma nic wspolmego z tym tematem, wiec jesli chcesz kontynowac to lepiej w innym temacie winksmiley.jpg
bełdzio
Cytat(nieraczek @ 21.05.2009, 08:13:43 ) *
A ciekawe czy MySQL wkrótce nie zakończy istnienia jak Oracle go przejął....

Twórca mySQL aktualnie tworzy zastępce dla mySQL, tak więc nawet jak zniknie to na jego miejsce wskoczy nowy produkt smile.gif
batman
Cytat(nieraczek @ 21.05.2009, 08:13:43 ) *
A ciekawe czy MySQL wkrótce nie zakończy istnienia jak Oracle go przejął....

Cytat(bełdzio @ 21.05.2009, 18:45:12 ) *
Twórca mySQL aktualnie tworzy zastępce dla mySQL, tak więc nawet jak zniknie to na jego miejsce wskoczy nowy produkt smile.gif

Nie zakończy swojego istnienia. Nawet się rozwinie. Zapowiedziana została wersja 5.4 (teraz jest beta do ściągnięcia), w której znacząco poprawiono wydajność. Poza tym obiło mi się o uszy, że silnik InnoDb zostanie zastąpiony czymś innym.
Należy również pamiętać, że kupując Sun-a, Oracle stał się dostawcą baz danych klasy entrprice oraz małych baz danych dla niewielkich odbiorców. Cytując dobrą polską komedię - "Nie zabijasz kury, która ma złote jaja." winksmiley.jpg
phpion
W sieci pojawiło się świeże porównanie MySQL oraz PostgreSQL:
http://blog.taragana.com/index.php/archive...arative-review/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.