sql >> Databasteknik >  >> RDS >> Mysql

Mysql lagringsmotor för loggtabell

Tja, enligt din fråga borde InnoDB göra jobbet eftersom:

  1. Dess skalbarhet är mycket bättre än MyISAM
  2. Det är radlåsande, därför passar det bättre om du ska skriva fler än att välja.
  3. Slutligen, eftersom du sa att de sällan kommer att nås, finns det inget behov av MyISAM eftersom det är bättre på utvalda frågor.

Kolla detta för mer information

REDIGERA

Jo, i kommentaren frågar du om andra motorer. Här är en fullständig lista av motorer. Bland dem, som du sa, har arkiv en nackdel, de andra passar inte in på din begäran. Här är ett citat från MySQL-webbplatsen:

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.

Så i princip:

  1. Om du ska använda MEMORY, gör inte som du sa, du kommer inte åt mycket data och din tabell kommer att växa för mycket. Du kommer att behöva mycket RAM för det och när du startar om kommer all data att gå förlorad.
  2. Om du ska använda MyISAM, gör det inte eftersom det är designat för tabeller där urvalsfrågor är vanligare än att infoga och uppdatera.
  3. När det gäller arkiv, det är ditt val. Här är en jämförelse mellan MyISAM och arkiv för en loggtabell. Jag skulle dock hålla mig till InnoDB.
  4. Jag kommer inte ens att nämna Merge, Blackhole, Exempel och andra motorer. (Jag har inte mycket kunskap om CSV-motorer, men såvitt jag har läst är det inte en lämplig motor för den här typen av tabeller.

För att vara ärlig, brukade jag spendera mycket tid innan jag gjorde ett viktigt steg i kodning. Jag undersökte i timmar, kanske i flera dagar om en fråga för att se vilket sätt som är lämpligast. Jag ska berätta vad, att forska är bra, men om det efter en tid hindrar dig från att arbeta så ska du sluta, dricka en kaffe och göra ditt val direkt. Prova därför bara det som är lämpligast för dig och som du kommer att uppleva kommer du att hitta ännu ett bättre sätt, genom att prova själv. Jag menar, jag tror inte att Facebook var designat för en sådan volym, men allt eftersom det växte fortsatte de att ändra strukturen därefter. Det är vad jag tror dock, kanske inte är verkligheten :) Hur som helst, hoppas att informationen hjälper dig.

EDIT 2013

Nedan hittar du korta beskrivningar av inbyggda MySQL-lagringsmotorer.

MyISAM

Dessa tabeller inkluderar ytterligare optimeringar, såsom avancerad cache och indexeringsmekanismer, som ger snabb åtkomst till data. Genom att använda låsning på tabellnivå ger MyISAM-lagringsmotorn samtidiga operationer. När läsprestanda är ett problem, i allmänhet, är MyISAM valet.

Minne

Även kallade heap-tabeller, minnestabeller är idealiska för snabb hämtning av ofta använda data som sällan ändras (som landskoder, postnummer eller andra uppslagstabeller). Som namnet antyder lagras data i minnet och därför är åtkomsten mycket snabbare än data som lagras på diskar. En betydande begränsning för att använda minne är att data är giltiga under MySQL-sessionen. När den kraschar eller stängs av går data förlorad.

InnoDB

Ett fall där du måste använda denna lagringsmotor är när du behöver använda främmande nycklar eller transaktioner. InnoDB är mer samtidig än MyISAM eftersom det ger radnivålåsning. Lagringsmotorn är mycket pålitlig. Ett annat fall när du kommer att vilja använda denna lagring är när du har fler skrivningar än läsningar. När du ofta skriver in data i tabellen försök använda denna lagring eftersom den är mer samtidig än MyISAM.

Arkiv

Den är designad för att lagra stora mängder data i ett komprimerat format. Ett av användningsfallen för denna lagringsmotor är att lagra arkivdata eller historiska data eller säkerhetsloggar. Tabellen använder inga index så för daglig datahämtning och lagring är det inte ett bra val. Det är låsning på radnivå och data komprimeras i farten när så krävs. Dessutom är det inte möjligt att ändra tabellen.

Slå samman

Merge används för att "sammanfoga" partitionerade tabeller som finns på samma maskin. När du delar upp ett stort bord i flera mindre tabeller och kommer åt dem samtidigt med hjälp av en sammanslagningstabell, är den största fördelen dess hastighet. Sökningar och sorteringar kommer att utföras snabbare eftersom det finns mindre data i tabellerna.




  1. MySql exportschema utan data

  2. MySQL flyttal jämförelse problem

  3. Hur använder man LOAD_FILE för att ladda en fil till en MySQL-blob?

  4. Hur man analyserar strängar som ett proffs med SQL SUBSTRING()-funktionen?