
Det var ett steg vi behövde ta. Det tog oss ganska lång tid att bestämma oss, trots att det var något vi visste förr eller senare skulle ge oss problem, vilket det också till slut gjorde.
För ett par veckor sedan, en helt vanlig dag, fick en rutinprocess i lagerhanteringsprogrammet vår webbplats att gå ner. Det var inte särskilt allvarligt, eftersom webbplatsen 20 sekunder senare var igång igen utan problem, men det var droppen som fick bägaren att rinna över och som fick oss att byta motor för MySQL-tabellerna.
Problemet var att motorn som följer med som standard i osCommerce, MyISAM, är betydligt snabbare när den gör läsfrågor, men å andra sidan låser den en tabell under den tid det tar att utföra en fråga, och om det är en gigantisk tabell med 135 frågor i kö som väntar på att få åtkomst till samma tabell, då har vi ett problem och som följd låser sig webbplatsen. När den ”blockerande” frågan väl har dödats återgår allt till det normala, men… hur länge? Och ännu värre: vad händer om vi inte är där och märker det?
Så vi bestämde oss för att ta tjuren vid hornen och, på rekommendation av den ansvarige för våra servrar, gick vi över till InnoDB. För detta förberedde vi en uppsättning tester och kontroller som vi körde före och efter motorbytet på våra lokala servrar och sedan i förproduktion. Även om det fanns risker med joins mellan tabeller, gjorde den enorma mängden av dem i vår kod att vi inte kunde analysera dem en och en i detalj. Därför valde vi att köra denna testuppsättning, ganska komplett trots allt.
När vi väl hade kontrollerat i förproduktion att allt gick som väntat, med tangentbordet i handen och ögonen klistrade vid skärmen, klockan 5:00 på morgonen — när det knappt finns några besökare — tog vi mod till oss och började med backup av databasen och direkt därefter med bytet av tabellmotor. Först de tyngsta en och en och sedan de lättare i grupper, för att inte belasta prestandan för de få modiga själar som kunde tänkas besöka oss vid så okristliga tider. På lite mer än en och en halv timme hade vi redan ändrat allt och kört igenom testuppsättningen. Inga fel, inga besvär, inget konstigt. Konstigt, eller hur? Men det är sant: den här gången var Murphy på vår sida.
Resultaten vi har fått är de väntade: inga tabellåsningar, till priset av något sämre prestanda i 10% av fallen, något vi hoppas lösa inom kort genom att dela upp de två eller tre mastodonttabeller vi har i delar. Om några dagar — eller veckor — berättar jag också hur den uppdelningen gick. Jag uppmuntrar er att läsa det då, men tills vidare lämnar jag ett par länkar för den som vill fördjupa sig i ämnet:
- http://www.arsys.info/programacion/myisam-o-innodb-elige-tu-motor-de-almacenamiento-mysql/
- http://dev.mysql.com/doc/refman/5.0/es/converting-tables-to-innodb.html
- http://stackoverflow.com/questions/7335515/migrating-from-myisam-to-innodb

Lämna ett svar