sql >> Database teknologi >  >> RDS >> Mysql

Mysql-lagringsmotor til logtabel

Nå, ifølge dit spørgsmål burde InnoDB gøre arbejdet fordi:

  1. Dets skalerbarhed er meget bedre end MyISAM
  2. Det er rækkelåsende, så hvis du skal have flere skrivninger end udvalgte, passer det bedre.
  3. Endelig, da du sagde, at de sjældent vil blive tilgået, er der ikke behov for MyISAM, da det er bedre til udvalgte forespørgsler.

Tjek dette for at få flere oplysninger

REDIGER

Nå, i kommentaren spørger du om andre motorer. Her er en fuld liste af motorer. Blandt dem, som du sagde, har arkiv en ulempe, de andre passer ikke til din anmodning. Her er et citat fra MySQL-webstedet:

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å dybest set:

  1. Hvis du vil bruge MEMORY, så lad være med at som du sagde, du vil ikke få adgang til data meget, og din tabel vil vokse for meget. Du skal bruge en masse RAM til det, og når du genstarter, vil alle data gå tabt.
  2. Hvis du vil bruge MyISAM så lad være, da det er designet til tabeller, hvor udvalgte forespørgsler er hyppigere end indsættelse og opdatering.
  3. Med hensyn til arkivering er det dit valg. Her er en sammenligning mellem MyISAM og arkiv for en logtabel. Jeg ville dog holde mig til InnoDB.
  4. Jeg vil ikke engang nævne Merge, Blackhole, Eksempel og andre motorer. (Jeg har ikke meget viden om CSV-motorer, men så vidt jeg har læst, er det ikke en passende motor til denne type tabel.

For at være ærlig brugte jeg meget tid, før jeg tog et vigtigt skridt i kodning. Jeg undersøgte i timevis, måske i dagevis, om et problem for at se, hvilken vej der er den mest passende. Jeg skal fortælle dig hvad, research er godt, men efter et tidspunkt, hvis det forhindrer dig i at arbejde, skal du stoppe, drikke en kop kaffe og træffe dit valg med det samme. Prøv derfor bare den mest passende for dig, og som du vil opleve, vil du finde endnu en bedre måde, ved at prøve dig selv. Jeg mener, jeg tror ikke, at Facebook var designet til sådan et volumen, men efterhånden som det voksede, fortsatte de med at ændre strukturen i overensstemmelse hermed. Det er dog det, jeg tror, ​​det er måske ikke virkeligheden :) Håber i hvert fald, at informationen hjælper dig.

EDIT 2013

Nedenfor finder du korte beskrivelser af indbyggede MySQL-lagringsmotorer.

MyISAM

Disse tabeller inkluderer yderligere optimeringer, såsom avancerede cache- og indekseringsmekanismer, som giver hurtig adgang til data. Ved at bruge låsning på bordniveau sørger MyISAM-lagringsmotoren for samtidige operationer. Når læseydelse er et problem, er MyISAM generelt valget.

Hukommelse

Hukommelsestabeller, også kaldet heap-tabeller, er ideelle til hurtig genfinding af ofte brugte data, der sjældent ændres (såsom landekoder, postnumre eller andre opslagstabeller). Som navnet antyder, lagres data i hukommelsen, og adgangen er derfor meget hurtigere end data gemt på diske. En væsentlig begrænsning for brug af hukommelse er, at data er gyldige under MySQL-session. Når den går ned eller lukker ned, går data tabt.

InnoDB

Et tilfælde, hvor du bliver nødt til at bruge denne lagringsmotor, er, når du skal bruge fremmednøgler eller transaktioner. InnoDB er mere samtidig end MyISAM, da det giver række-niveau låsning. Lagermotoren er yderst pålidelig. Et andet tilfælde, hvor du vil bruge dette lager, er, når du har flere skrivninger end læser. Når du ofte skriver data ind i tabellen, prøv at bruge denne lagring, fordi den er mere samtidig end MyISAM.

Arkiv

Den er designet til at gemme store mængder data i et komprimeret format. Et af anvendelsesmulighederne for denne lagringsmotor er at gemme arkiv- eller historiske data eller sikkerhedslogfiler. Tabellen bruger ingen indekser, så til daglig datahentning og lagring er det ikke et godt valg. Det er låst på rækkeniveau, og data bliver ukomprimeret i farten, når det kræves. Desuden er det ikke muligt at ændre tabellen.

Flet

Merge bruges til at 'flette' partitionerede tabeller, som ligger på den samme maskine. Når du deler et stort bord op i flere mindre borde og får adgang til dem samtidigt ved hjælp af en flettetabel, er den største fordel dens hastighed. Søgninger og sorteringer udføres hurtigere, da der er færre data i tabeller.




  1. SQLite JSON_EACH()

  2. En effektiv måde at gemme et array og dets nøgler til en database

  3. Pythons mysqldb obskure dokumentation

  4. SQLSTATE[42S22]:Kolonne blev ikke fundet:1054 Ukendt kolonne 'id' i 'where clause' (SQL:vælg * fra 'songs' hvor 'id' =5 limit 1)