sql >> Database >  >> RDS >> Mysql

Wat is het verschil tussen MyISAM en InnoDB?

De belangrijkste verschillen tussen InnoDB en MyISAM ("met betrekking tot het ontwerpen van een tabel of database" waar u naar vroeg) zijn ondersteuning voor "referentiële integriteit" en "transacties".

Als u de database nodig hebt om beperkingen voor externe sleutels af te dwingen, of als u de database nodig hebt om transacties te ondersteunen (d.w.z. wijzigingen die zijn aangebracht door twee of meer DML-bewerkingen die als één werkeenheid worden behandeld, waarbij alle wijzigingen worden toegepast of alle wijzigingen worden teruggedraaid) dan zou je de InnoDB-engine kiezen, aangezien deze functies ontbreken in de MyISAM-engine.

Dat zijn de twee grootste verschillen. Een ander groot verschil is de gelijktijdigheid. Met MyISAM krijgt een DML-instructie een exclusieve vergrendeling op de tafel, en terwijl die vergrendeling wordt vastgehouden, kan geen enkele andere sessie een SELECT- of DML-bewerking op de tafel uitvoeren.

Die twee specifieke engines waar je naar vroeg (InnoDB en MyISAM) hebben verschillende ontwerpdoelen. MySQL heeft ook andere opslagengines, met hun eigen ontwerpdoelen.

Dus bij het kiezen tussen InnoDB en MyISAM, is de eerste stap om te bepalen of u de functies van InnoDB nodig hebt. Zo niet, dan komt MyISAM in overweging.

Een meer gedetailleerde bespreking van verschillen is nogal onpraktisch (in dit forum) zonder een meer gedetailleerde bespreking van de probleemruimte... hoe de toepassing de database zal gebruiken, hoeveel tabellen, grootte van de tabellen, de transactiebelasting, volumes van geselecteerde , invoegen, updates, gelijktijdigheidsvereisten, replicatiefuncties, enz.

Het logische ontwerp van de database moet worden gecentreerd rond gegevensanalyse en gebruikersvereisten; de keuze om een ​​relationele database te gebruiken zou later komen, en nog later zou de keuze voor MySQL als een relationeel databasebeheersysteem, en dan de selectie van een opslagengine voor elke tabel.



  1. Nog een argument voor opgeslagen procedures

  2. Een variabele gebruiken in OPENROWSET-query

  3. (Engels) Oracle Database 19c Pre-Built Developer VM gebruiken

  4. Controleer op x opeenvolgende dagen - gegeven tijdstempels in database