MyISAM je jedan od najstarijih i najpoznatijih storage enginea u MySQL bazi podataka. Dugo je bio zadani engine u MySQL-u – sve do verzije 5.5 – prije nego što ga je zamijenio InnoDB. Iako se danas rijetko koristi u modernim aplikacijama, ovaj storage engine je i dalje prisutan u starijim sustavima, arhivama i specifičnim slučajevima, gdje su brzina i jednostavnost važnije od sigurnosti podataka.
| VEZANO: MyISAM vs InnoDB | Koji MySQL storage engine je brži i sigurniji i kada ima smisla koristiti svaki
Ukratko, ovaj storage engine u MySQL-u određuje kako se podaci fizički spremaju, kako se indeksiraju, zaključavaju i oporavljaju. MyISAM je dizajniran u vrijeme kada su baze bile manje, aplikacije jednostavnije, a paralelni rad korisnika znatno rjeđi nego danas.
Kako MyISAM sprema podatke?
MyISAM svaku tablicu dijeli u tri fizičke datoteke:
- .frm – definicija strukture tablice
- .MYD – stvarni podaci (MyData)
- .MYI – indeksi (MyIndex)
Ovakva struktura omogućuje jednostavno kopiranje tablica na razini datoteka, ali istovremeno donosi ozbiljna ograničenja kod stabilnosti i oporavka podataka.
Ključne karakteristike MyISAM-a
Najvažnija osobina MyISAM-a je da ne podržava transakcije. To znači da nema COMMIT i ROLLBACK, niti ACID garancija. Ako dođe do prekida napajanja ili rušenja servera tijekom zapisa, postoji realna mogućnost oštećenja tablice. Druga velika mana je zaključavanje na razini tablice (table-level locking). Kada jedan korisnik upisuje podatke, svi ostali moraju čekati. U sustavima s većim brojem istodobnih upita to postaje ozbiljan usko grlo.
S druge strane, MyISAM ima nekoliko prednosti:
- vrlo brzo čitanje podataka
- jednostavna struktura
- manja potrošnja resursa u usporedbi s InnoDB-om
- podrška za FULLTEXT indeksiranje (što je nekada bila velika prednost)
Zbog toga je ovaj storage engine bio popularan za read-only sustave, statističke baze, logove i jednostavne portale s minimalnim upisima.
Oporavak i integritet podataka
MyISAM ne podržava referencijalni integritet. Nema stranih ključeva (foreign keys), nema provjere povezanosti između tablica, a konzistentnost podataka ovisi isključivo o aplikaciji. Ako dođe do oštećenja tablice, često je potrebno ručno pokretati alate poput REPAIR TABLE ili myisamchk, što u produkciji može biti rizično i vremenski zahtjevno.
Zašto je InnoDB preuzeo primat?
Razvojem web aplikacija, povećanjem broja korisnika i važnosti sigurnosti podataka, MyISAM je postao zastario. I to zato što InnoDB nudi:
- transakcije
- zaključavanje na razini retka
- bolju otpornost na pad sustava
- automatski oporavak
Zbog toga je InnoDB danas standardni izbor, dok se MyISAM koristi uglavnom iz povijesnih razloga ili u vrlo specifičnim scenarijima.
Zaključak
MyISAM je važan dio povijesti MySQL-a i dobar primjer kako su se baze podataka razvijale. Iako je danas tehnički inferioran modernim engineima, razumijevanje MyISAM-a pomaže u radu sa starim sustavima i u shvaćanju zašto su transakcije, zaključavanje redaka i integritet podataka postali ključni standardi u suvremenim bazama.


