Test mellan MySQL och MySQLi

Jag har länge använt mig av den vanliga MySQL-utbyggnaden när jag programmerar PHP. Dock har jag vetat att MySQLi existerar men aldrig tagit steget att testa. Men för någon dag sen fick jag ett infall av nyfikenhet och tänkte att jag skulle ge det en chans. Sagt och gjort testade jag mig fram och började experimentera lite.

Jag vet att MySQLi är bättre, innehåller fler funktioner, stabilare med mera men jag kände ändå att jag ville testa själv. Tyvärr har jag ingen erfarenhet av att göra denna typen av test, så det finns säkerligen mängder av brister eller saker man kunde gjort bättre. På grund av detta tror jag testet inte återspeglar verkligheten till 100%. Men någon form av fingervisning kan man nog ändå få.

Testet genomfördes på min server, som tro det eller ej står i garderoben. Det är en Intel 1.4Ghz, 768Mb Internminne, OS är Ubuntu, PHP 5 och MySQL 5. Rena monstret alltså, eller inte.

Testet
Testet bygger på att sätta in (INSERT) och plocka ut (SELECT) data från en MySQL-databas med hjälp av PHP. Jag använde mig av två olika typer av motorer för tabellerna, InnoDB och MyISAM. Detta för att kunna testa skillnaden i hastighet mellan dessa två.

Tabellen är uppbyggd enligt följande och populerades med 1.000 rader.

Resultatet

MySQL InnoDB MySQL MyISAM MySQLi InnoDB MySQLi MyISAM
INSERT 3.1367 s 0.4527 3.2849 0.4491
INSERT Prepared Statement N/A N/A 3.3521 0.6694
INSERT Stored Procedure N/A N/A 3.3561 0.5086
SELECT 0.0052 s 0.0055 0.0032 0.0034
SELECT Prepared Statement N/A N/A 0.0118 0.0115
SELECT Stored Procedure N/A N/A 0.1851 0.1926

Sammanfattning

Som ni ser själva så är det inte stor skillnad mellan MySQL och MySQLi. Det jag är mest förvånad över är skillnaden i hastighet mellan InnoDB och MyISAM, i detta fallet handlar det om sekunder. Jag är också förvånad över att ‘Stored Procedures‘ va ganska slött jämfört me de andra sätten.

Jag vet heller inte om 1000 rader räcker för ge till bra resultat.

Som jag skrev innan är jag ingen expert på dessa typer av tester så det kanske inte är en bra idé att utgå från detta testet när man väljer motor eller eller MySQL-tillägg.

Jag tar gärna emot kommentarer och feedback.

4 thoughts on “Test mellan MySQL och MySQLi”

  1. Imponerande resultat minst sagt. Vart själv riktigt sugen på att gå över till MySQLi nu. Har du några guider, tutorials etc. att rekommendera? Eller kommer det kanske en uppföljning på denna post månne? 🙂

  2. Intressant jämförelse mellan MySQL och MySQLi. Men precis som du flaggar för, så är 1 000 poster för liten volym för att det ska ge något större utslag, särskilt när det gäller jämförelsen mellan MyISAM och InnoDB.
    Min erfarenhet (bland annat från Barometern.se) är att inserts/updates kan bli ganska långsamma med MyISAM och tabeller som har några hundratusen poster eller mer. Vid stora volymer låser InnoDB tabeller mer effektivt än MyISAM och därför vinner sannolikt InnoDB en jämförelse som ovan om DB-n lastas med större volymer.

  3. Anton: Känner faktiskt inte till några manualer förutom http://www.php.net, där finns det mycket information att hämta. Det är mycket möjligt att det kan komma en post som utvecklar detta med MySQLi.

    Fredrik: Det var nästan det jag trodde, att 1000 rader är för lite för att ge en rättvis bild av de båda.

Din kommentar eller åsikt