Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql/pod] PDO wolniejsze od MySQL?
Forum PHP.pl > Forum > Bazy danych
projektGraf
Witam

Ponieważ tyle się pisze nad temat szybkości PDO postanowiłem porównać obie metody która jest szybsza.

Tak więc stworzyłem dwa pliki:
pdo.php
  1. <?php
  2. $start=microtime();
  3.  
  4. try{
  5.  
  6. $pdo = new PDO('mysql:host=******;dbname=*******', '*******', '******');
  7. $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  8.  
  9. $stmt = $pdo -> query('SELECT `id`, `coordinates_X`, `coordinates_Y`, `create_ip_user`, `create_date`, `name_pl`, `wiki_link_pl`
  10. FROM `points` ORDER BY `id`');
  11.  
  12. while($row = $stmt -> fetch())
  13. {
  14. print $row['id'].' - '.$row['coordinates_X'].' - '.$row['coordinates_Y'].' - '.$row['create_ip_user'].' - '.$row['create_date'].' - '.$row['name_pl'].' - '.$row['wiki_link_pl'].'<br>';
  15. }
  16. $stmt -> closeCursor();
  17. }
  18. catch(PDOException $e)
  19. {
  20. echo 'Błąd bazy danych: ' . $e->getMessage();
  21. }
  22.  
  23.  
  24. echo round(microtime()-$start, 6);
  25. ?>


sql.php
  1. <?php
  2. $start=microtime();
  3.  
  4. define('DB_SERVER', '*******'); // Host do bazy SQL
  5. define('DB_SERVER_USERNAME', '*******'); // Nazwa użytkownika bazy SQL
  6. define('DB_SERVER_PASSWORD', '******'); // Hasło do bazy SQL
  7. define('DB_DATABASE', '******');
  8.  
  9.  
  10. if(!mysql_connect(DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD)){
  11. print 'Konfiguracja do dupy';
  12. }
  13.  
  14. if(!mysql_select_db(DB_DATABASE) ){
  15. print 'zła baza';
  16. }
  17. mysql_query("SET NAMES 'latin2'");
  18.  
  19. $query = mysql_query("SELECT `id`, `coordinates_X`, `coordinates_Y`, `create_ip_user`, `create_date`, `name_pl`, `wiki_link_pl`
  20. FROM `points` ORDER BY `id`");
  21.  
  22. while($row = mysql_fetch_array($query)){
  23.  
  24. print $row['id'].' - '.$row['coordinates_X'].' - '.$row['coordinates_Y'].' - '.$row['create_ip_user'].' - '.$row['create_date'].' - '.$row['name_pl'].' - '.$row['wiki_link_pl'].'<br>';
  25. }
  26.  
  27.  
  28. echo round(microtime()-$start, 6);
  29.  
  30. ?>


To samo zapytanie ten sam serwer, ta sama metoda pokazywania danych i.......
wychodzi że PDO jest wolniejsze od MySQL
Ciekawe co wy na to

Oto linki sami ocencie:
http://infointravel.com/test/pdo.php
http://infointravel.com/test/sql.php

Pozdrawiam
kilas88
"PDO wolniejsze od MySQL", to jakiś żart? PDO jest warstwą abstrakcji dla różnych dialektów SQL, w tym MySQL.
projektGraf
No to wiem, ale porównaj sobie czasy, i wychodzi że przy użyciu zapytania PDO czas jest gorszy od zwykłego MySQL.
Sam się zdziwiłem dlatego pisze na forum, bo przerabiam cały soft teraz na PDO i się zdziwiłem gdy sobie zrobiłem taki test.
Pozdrawiam
erix
PDO JEST wolniejszy.

http://dealnews.com/developers/php-mysql.html
ziqzaq
To ja może o samym kodzie testu bo to, że PDO jest wolniejsze jest jasne.
Wiesz, że na ta twoja metoda daje niekiedy minusowe czasy (np. ja miałem 0.255882 dla pdo.php i -0.664469 dla sql.php)? Tak to jest jak się odejmuje ciągi znaków a nie liczby.
Manual microtime(), i zobacz sobie co ta funkcja zwraca i jaki - jakże ważny dla ciebie - argument przyjmuje.
Dla testu zrób sobie:

Pozdrawiam.
kbsucha
Warto by poszukać nowszego testu bo 3 lata to przepaść w programowaniu. Do tego nie wiem jak odnieść się do tego: "I have since run these tests and found PDO to be just as fast as the mysql and mysqli extension. I am not sure what changed. But, change it did." Pomijając fakt, że ten tekst chyba do końca po angielsku nie jest, to autor twierdzi, ze czasy w późniejszych tekstach były już zbliżone.

Co do tematu, to można się spodziewać, że PDO będzie wolniejsze ale nie sądze aby to były jakieś znaczące liczby. Przynajmniej wg mnie nieistotne w stosunku do korzyści jakie oferuje biblioteka.
TrevorGryffits
A jaka wersja PHP?
wookieb
PDO jest wolniejsze. Przy ostatnich testach jakie robiłem (10 000 zapytań w pętli) pdo przegrywa 1s względem mysql_*. Jest to bardzo dobry wynik co m.in spowodowało, że przeszedłem na PDO.
vokiel
Różnice w szybkości zależą od rodzaju operacji. Nawet w linku który podał erix:
Cytat
Select Speed:
extension req/s
------------------------
mysqli 164
mysql 162

PDO 88
mysqli (prepared) 86
PDO (prepared) 81

Cytat
Insert Speed
extension time
--------------------------
pdo (extended) 18.17s
mysqli (extended) 18.40s
mysql (extended) 18.46s

pdo (prepared) 25.04s
mysqli (prepared) 36.93s
mysqli 50.43s
mysql 53.09s
pdo 59.96s


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.