Het grootste deel van mijn tijd besteed ik aan het werken met mijn klanten aan de Uitgebreide statuscontrole voor databaseprestaties . Het beste deel van de betrokkenheid bij de gezondheidscontrole is dat ik veel nieuwe mensen ontmoet en veel verschillende verhalen deel. Onlangs werd mij gevraagd door een van de DBA's die ook aan MySQL samen met SQL Server werkt, wat is mijn voorkeursengine voor MySQL - MyISAM of InnoDB?
Ik denk dat het een zeer interessante vraag is om te stellen in het jaar 2019, aangezien ik geloof dat het MySQL-team zelf de beslissing hierover al heeft genomen sinds MySQL versie 5.5. Ze hebben InnoDB al geselecteerd als hun standaardengine sinds MySQL 5.5.
Hier zijn mijn belangrijkste vijf redenen om voor InnoDB te gaan
- InnoDB ondersteunt vergrendeling op rijniveau, wat essentieel is voor de prestaties. MyISAM ondersteunt alleen vergrendeling op tafelniveau, waardoor een enorm knelpunt ontstaat wanneer uw tabel regelmatig wordt bijgewerkt.
- InnoDB implementeert transacties, die cruciaal zijn voor missiekritieke database-applicaties die betrokken zijn bij zowel bankieren als e-commerce.
- InnoDB ondersteunt relatiebeperkingen zoals externe sleutels, waardoor het relationeel databasevriendelijker is dan MyISAM, dat geen enkele ondersteunt.
- InnoDB ondersteunt ACID-transacties (Atomicity, Consistency, Isolation, Durability), waardoor het volledig voldoet aan de RDBMS-regels die MyISAM niet ondersteunt.
- InnoDB beheert indexen en basistabel met behulp van intern opslagbeheer met geheugenbufferpool, wat uiterst efficiënt is in termen van prestaties. MyISAM gebruikt schijfbestanden voornamelijk voor de basistabel, die niet is geoptimaliseerd voor prestaties.
Mijn suggestie is dat als je de engine moet selecteren, je MySQL de standaard engine laat bepalen of InnoDB selecteert die de nieuwste functies van RDBMS heeft.
Ik ben momenteel bezig met het schrijven van een whitepaper over dit onderwerp, zodra de whitepaper is gepubliceerd, zal ik dat met jullie allemaal delen, zodat jullie het erover kunnen lezen.