Non sei loggato | Register | Login

MySQLi vs PDO Aggiungi

News / Software

In questo periodo ho sbattuto la testa su varie fonti per poter scegliere tra i 2 (volendo mollare il classico approccio mysql in PHP).
Le 2 classi appartengono a categorie diverse, per la precisione:

  • MySQLi: API DB nativa
  • PDO: Database Abstraction Layer

Cosa significa? Con PDO mi risulterà molto facile cambiare tipologia del database anche dopo la fase di realizzazione (appunto perchè mi permette di utilizzare mysql, sqlite, ecc…) cosa che con MySQLi non accade perchè sarei molto più vincolato.
Naturalmente questa flessibilità va a discapito delle performance:

Extension [Req/Sec]
mysqli [64]
mysq [162]
PDO [88]
mysqli (prepared) [86]
PDO (prepared) [81]

Ho provato sia MySQLi che PDO ma la mia scelta è ricaduta su quest’ultimo perchè durante la fase di testing ho sbattuto su un bug molto fastidioso di MySQLi che me l’ha quasi fatto odiare :P

Altri link utili che parlano dei due:

Buona lettura!

Daniele Simonin 28 January 2007 alle 12:43 Trackback URI

Scrivi un commento

Tags di formattazione:








Leggi i 7 commenti

Utile raccolta di informazioni. A onor di cronaca, con quale bug di MySQLi ti sei scontrato? A voler esser pignoli, il benchmark citato riporta 164 richieste al secondo per MySQLi; inoltre, da php.net/pdo:

PDO fornisce un livello di astrazione di accesso ai dati, cioè a prescindere dal db scelto si usano le stesse funzioni per effettuare query e raccogliere dati. PDO non fornisce l’astrazione del database: non riscrive l’SQL nè emula le funzionalità mancanti, serve un livello di astrazione maggiore per questo.

In generale l’estensione MySQL improved è ampiamente preferita per applicazioni MySQL-based (soprattutto per ragioni di performance), quindi vorrei puntualizzare che la scelta tra i due è da vincolare prima di tutto ai tipi di db con cui si ha a che fare.

Commento di Daniele Paolella 5 March 2007 alle 13:59

Concordo pienamente con te :) Il bug ora come ora non lo ricordo perchè è passato più di un mese…comunque non mi ritornava il valore esatto di un risultato di una query sql.

Commento di Daniele Simonin 5 March 2007 alle 14:08

PDO is usefull for SQLite3… since there is no standard SQLite 3 extension besides the PDO one!

For MySQL… yes, mysqli would be a better solutions if speed is needed!

(sorry, I don’t speak or write italian)

Commento di Emmanuel 15 March 2007 alle 21:09

scusate mi sapete dire che cos’è pdo e le varie differenza tra i metodi pdo mysql e odbc?? aiutatemi

Commento di chiara 11 May 2008 alle 18:57

Ciao, in giro trovi una marea di guide a riguardo :)

Commento di Daniele Simonin 12 May 2008 alle 07:25

ciao Emmanuel.
PHP dispone di molte funzione per relazionarsi con i database.

esistono percui funzioni come mysql_* che ti permettono di interfacciarti con un db tipo mysql, e così via.
questi tipi di funzioni PARLANO DIRETTAMENTE AL DATABASE. cio’ significa che se cambi database, dovrai aggiornare tutte le funzioni in giro per i tuoi script.

MYSQLI e’ un’estensione delle funzioni del tipo sopracitato che interrogano database tipo mysql. questa estensione si caratterizza per VELOCITA’, STRUTTURAZIONE AD OGGETTI (e’ una classe), MOLTE FEATURES INTERESSANTI

ora, supponiamo che tu debba sviluppare un software e non ti e’ dato sapere quale database verrà usato. a questo punto devi servirti di un LIVELLO D’ASTRAZIONE fra te e il database. insomma, una serie di funzioni del tipo query( ‘tipo_di_database’, ‘query’ ). a tale scopo esistono funzioni del tipo DBX_* e le piu’ corpose PDO.

detto tutto cio’, capisci tu e gli altri lettori che NON SONO PARAGONABILI LIVELLI DI ASTRAZIONE (PDO, DBX, PEAR::Db) CON FUNZIONI DIRETTE AL DATABASE!!! sono due categorie di funzioni con un ruolo differente.
quello che si puo’ fare, e’ confrontare i livelli di astrazione tra di loro. e allora puoi dire PDO e’ + veloce di PEAR::Db etc.

Commento di marco panichi 19 June 2008 alle 21:40

Grazie mille x il commento :)

Commento di Daniele Simonin 20 June 2008 alle 07:16

Feed

infoPillole (by Wikipedia)

Ultimi commenti

  • Luca: ho sempre più dubbi sul punto 5. molti consigliano...
  • Paolo Iulita: io userei un mac. soddisfa i primi due...
  • towerlight2002: …manca IE, d’altra parte la...
  • sicibanez: Dopo alcune ore trascorse a confrontare le...
  • Daniele Simonin: grazie :) in questi giorni lo sto...

Calendario

March 2010
M T W T F S S
« Feb    
1234567
891011121314
15161718192021
22232425262728
293031  

Archivio

Categorie

News casuali

Ultimi tutorials

Progetti

Alcuni miei lettori

Have a break