sql >> Database >  >> RDS >> Mysql

Mysql-opslagengine voor logtabel

Welnu, volgens uw vraag zou InnoDB het werk moeten doen omdat:

  1. De schaalbaarheid is een stuk beter dan MyISAM
  2. Het is rij-vergrendelend, dus als je meer schrijft dan selecteert, past het beter.
  3. Ten slotte, aangezien u zei dat ze zelden zullen worden geopend, is MyISAM niet nodig omdat het beter is voor bepaalde zoekopdrachten.

Kijk hier voor meer informatie

BEWERKEN

Nou, in de opmerking vraag je naar andere motoren. Hier is een volledige lijst van motoren. Onder hen, zoals u zei, heeft archief een nadeel, de anderen passen niet bij uw verzoek. Hier is een citaat van de MySQL-website:

InnoDB has been designed for maximum performance when processing large data volumes. 
Its CPU efficiency is probably not matched by any other disk-based relational database
engine.

Dus eigenlijk:

  1. Als je MEMORY gaat gebruiken, doe het dan niet zoals je zei, je zult niet veel toegang hebben tot gegevens en je tabel zal te veel groeien. Daar heb je veel RAM voor nodig en als je opnieuw opstart, gaan alle gegevens verloren.
  2. Als u MyISAM gaat gebruiken, doe dat dan niet, want het is ontworpen voor tabellen waarin selectiequery's vaker voorkomen dan invoegen en bijwerken.
  3. Wat betreft archief, dat is jouw keuze. Hier is een vergelijking tussen MyISAM en archief voor een logtabel. Ik zou echter bij InnoDB blijven.
  4. Ik zal Merge, Blackhole, Voorbeeld en andere engines niet eens noemen. (Ik heb niet veel kennis van de CSV-engine, maar voor zover ik heb gelezen, is dat geen geschikte engine voor dit soort tabellen.

Om eerlijk te zijn, besteedde ik veel tijd aan het maken van een belangrijke stap in het coderen. Ik heb uren, misschien dagenlang gezocht naar een probleem om te zien welke manier het meest geschikt is. Ik zal je wat vertellen, onderzoeken is goed, maar als het je op een gegeven moment verhindert om te werken, moet je stoppen, een kopje koffie drinken en meteen je keuze maken. Probeer daarom gewoon de meest geschikte voor jou en zoals je zult ervaren, zul je zelfs een betere manier vinden door het zelf te proberen. Ik bedoel, ik geloof niet dat Facebook is ontworpen voor zo'n volume, maar naarmate het groeide, bleven ze de structuur dienovereenkomstig veranderen. Dat is echter wat ik geloof, misschien niet de realiteit :) Hoe dan ook, ik hoop dat deze info je helpt.

BEWERK 2013

Hieronder vindt u korte beschrijvingen van ingebouwde MySQL-opslagengines.

MijnISAM

Deze tabellen bevatten aanvullende optimalisaties, zoals geavanceerde cache- en indexeringsmechanismen, die snelle toegang tot gegevens bieden. Met behulp van vergrendeling op tabelniveau zorgt de MyISAM-opslagengine voor gelijktijdige bewerkingen. Wanneer leesprestaties een probleem zijn, is MyISAM over het algemeen de keuze.

Geheugen

Ook wel heap-tabellen genoemd, zijn geheugentabellen ideaal voor het snel ophalen van veelgebruikte gegevens die zelden worden gewijzigd (zoals landcodes, postcodes of andere opzoektabellen). Zoals de naam al doet vermoeden, worden gegevens in het geheugen opgeslagen en is de toegang daarom veel sneller dan gegevens die op schijven zijn opgeslagen. Een belangrijke beperking voor het gebruik van geheugen is dat gegevens geldig zijn tijdens MySQL-sessie. Wanneer het crasht of wordt afgesloten, gaan gegevens verloren.

InnoDB

Een geval waarin u deze opslagengine moet gebruiken, is wanneer u externe sleutels of transacties moet gebruiken. InnoDB is meer gelijktijdig dan MyISAM omdat het vergrendeling op rijniveau biedt. De opslagmotor is zeer betrouwbaar. Een ander geval waarin u deze opslag wilt gebruiken, is wanneer u meer schrijft dan leest. Als u regelmatig gegevens naar de tabel schrijft, probeer dan deze opslag te gebruiken, omdat deze meer gelijktijdig is dan MyISAM.

Archief

Het is ontworpen voor het opslaan van grote hoeveelheden gegevens in een gecomprimeerd formaat. Een van de gebruiksscenario's van deze opslagengine is het opslaan van archief- of historische gegevens of beveiligingslogboeken. De tabel gebruikt geen indexen, dus voor het dagelijks ophalen en opslaan van gegevens is het geen goede keuze. Het is vergrendeling op rijniveau en gegevens worden direct gedecomprimeerd wanneer daarom wordt gevraagd. Bovendien is het niet mogelijk om de tabel te wijzigen.

Samenvoegen

Samenvoegen wordt gebruikt om gepartitioneerde tabellen samen te voegen die zich op dezelfde machine bevinden. Wanneer u een grote tabel in meerdere kleinere tabellen splitst en ze tegelijkertijd opent met behulp van een samenvoegtabel, is het grootste voordeel de snelheid ervan. Zoeken en sorteren gaat sneller omdat er minder gegevens in tabellen staan.




  1. Hoe ontsnap ik aan gereserveerde woorden die als kolomnamen worden gebruikt? MySQL/tabel maken

  2. nhibernate, call-functie in Oracle die sys refcursor retourneert

  3. Converteer eenvoudig uw Microsoft Access-query's met deze nieuwe tool!

  4. Hoe deze fout op te lossen mysql_fetch_assoc() verwacht dat parameter 1 resource is, boolean opgegeven?