sql >> Databáze >  >> RDS >> Mysql

Úložný modul Mysql pro tabulku protokolů

No, podle vaší otázky by InnoDB měl dělat práci, protože:

  1. Jeho škálovatelnost je mnohem lepší než u MyISAM
  2. Je to blokování řádků, takže pokud budete mít více zápisů než výběrů, lépe se hodí.
  3. A konečně, protože jste řekli, že k nim bude přístup jen zřídka, není potřeba MyISAM, protože je lepší na vybrané dotazy.

Zde najdete další informace

UPRAVIT

No a v komentáři se ptáš na jiné motory. Zde je úplný seznam motorů. Mezi nimi, jak jste řekl, archiv má nevýhodu, ostatní nevyhovují vašemu požadavku. Zde je citace z webu MySQL:

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.

Takže v podstatě:

  1. Pokud se chystáte používat MEMORY, nedělejte to, jak jste řekli, nebudete moc přistupovat k datům a vaše tabulka se příliš rozroste. Budete k tomu potřebovat hodně paměti RAM a po restartu budou všechna data ztracena.
  2. Pokud se chystáte používat MyISAM, nedělejte to, protože je navržen pro tabulky, ve kterých jsou výběrové dotazy častější než vkládání a aktualizace.
  3. Pokud jde o archiv, je to vaše volba. Zde je srovnání mezi MyISAM a archivem pro tabulku protokolů. Držel bych se však InnoDB.
  4. Nebudu se ani zmiňovat o Merge, Blackhole, Example a dalších enginech. (Nemám moc znalostí o CSV enginu, ale jak jsem se dočetl, tak to není vhodný engine pro tento druh tabulek.

Abych byl upřímný, trávil jsem hodně času, než jsem udělal důležitý krok v kódování. Zkoumal jsem hodiny, možná i dny o problému, abych zjistil, který způsob je nejvhodnější. Řeknu vám, bádání je dobré, ale pokud vám to po chvíli brání v práci, měli byste se zastavit, vypít kávu a hned se rozhodnout. Vyzkoušejte si proto ten, který vám nejvíce vyhovuje, a jak sami vyzkoušíte, najdete ještě lepší způsob, když to zkusíte sami. Nevěřím, že Facebook byl navržen pro takový objem, ale jak rostl, pokračovali v odpovídající změně struktury. Věřím, že to však nemusí být realita :) Každopádně doufám, že vám tyto informace pomohou.

ÚPRAVY 2013

Níže naleznete stručný popis vestavěných úložišť MySQL.

MyISAM

Tyto tabulky zahrnují další optimalizace, jako jsou pokročilé mechanismy mezipaměti a indexování, které poskytují rychlý přístup k datům. Pomocí zamykání na úrovni tabulky zajišťuje úložiště MyISAM souběžné operace. Pokud jde o výkon při čtení, obecně je volbou MyISAM.

Paměť

Paměťové tabulky, nazývané také tabulky haldy, jsou ideální pro rychlé načítání často používaných dat, která se jen zřídka mění (jako jsou kódy zemí, PSČ nebo jiné vyhledávací tabulky). Jak název napovídá, data jsou uložena v paměti, a proto je přístup mnohem rychlejší než data uložená na discích. Jedním z významných omezení pro používání paměti je, že data jsou platná během relace MySQL. Při zhroucení nebo vypnutí dojde ke ztrátě dat.

InnoDB

Jedním z případů, kdy budete muset použít tento modul úložiště, je situace, kdy potřebujete použít cizí klíče nebo transakce. InnoDB je více souběžný než MyISAM, protože poskytuje zamykání na úrovni řádků. Zásobník je vysoce spolehlivý. Dalším případem, kdy budete chtít použít toto úložiště, je situace, kdy máte více zápisů než čtení. Když často zapisujete data do tabulky, zkuste použít toto úložiště, je více souběžné než MyISAM.

Archivovat

Je určen pro ukládání velkého množství dat v komprimovaném formátu. Jedním z případů použití tohoto úložiště je ukládání archivních nebo historických dat nebo bezpečnostních protokolů. Tabulka nepoužívá žádné indexy, takže pro každodenní získávání a ukládání dat není dobrou volbou. Je to zamykání na úrovni řádků a data jsou na požádání za běhu nekomprimována. Kromě toho není možné měnit tabulku.

Sloučit

Merge se používá ke „sloučení“ rozdělených tabulek, které jsou umístěny na stejném počítači. Když rozdělíte velkou tabulku na několik menších tabulek a přistupujete k nim současně pomocí slučovací tabulky, největší výhodou je její rychlost. Vyhledávání a řazení bude probíhat rychleji, protože v tabulkách je méně dat.




  1. Filtrovat podle COUNT(*)?

  2. Převod čísla epochy na lidsky čitelné datum v mysql

  3. Najděte ve své aplikaci netěsnosti připojení k databázi

  4. Při vkládání dat do SQLite převeďte hodnoty NULL na výchozí hodnotu sloupce