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

Jak zvládnout příliš mnoho souběžných připojení i po použití fondu připojení?

Představec není dostatečně konkrétní, aby dal pevný návrh, ale úplný seznam toho, co by se dalo udělat, je následující:

  • Shluk databáze :Vhodné pro situace, kdy nechcete měnit aplikační vrstvu a stačí se dotknout databáze. Existuje limit, kolik můžete získat z databázového clusteru. Pokud objem vašich požadavků neustále roste, toto řešení nakonec také selže. Ale dobrou zprávou je, že máte všechny funkce, které jste již měli v obyčejném jednoinstančním MySQL.
  • Sharding :Vzhledem k tomu, že vaše otázka je označena MySQL a ta sama o sobě nepodporuje sharding, pokud chcete použít toto řešení, musíte jej implementovat do vaší aplikační vrstvy. V tomto řešení logicky rozložíte svá data do více databází (nejlépe ve více instancích MySQL na samostatném hardwaru). Bude vaší odpovědností najít vhodnou databázi obsahující vámi určená data. Je to jedno z nejúčinnějších řešení vůbec, ale ne vždy je proveditelné. Jeho největší chybou je, že data rozptýlená mezi dvě nebo více databází nelze zahrnout do transakce.
  • Replikace :V závislosti na vašem scénáři můžete být schopni začlenit replikaci databáze a mít na nich kopie vašich dat. Tímto způsobem se k nim můžete připojit místo hlavní databáze a snížit její zatížení. Výchozí definice replikace je scénář master/slave, ve kterém je datový tok jednosměrný, od mastera k slave. Takže změny, které můžete provést na slave, zatímco budou aplikovány na salve, nebudou mít vliv na master. Existuje však také konfigurace replikace master/master, ve které je tok dat oběma způsoby. Přesto nemůžete předpokládat atomovou integritu pro souběžné změny dat mezi oběma mastery. Toto řešení je nakonec nejúčinnější, pokud ho plánujete používat v režimu master/slave a používat slave pro přístup pouze pro čtení.
  • Ukládání do mezipaměti :Možná by zde toto řešení nemělo být zahrnuto, ale protože ho váš stonek neodmítá, je to tady. Jedním ze způsobů, jak snížit zatížení databáze, je uložit data po extrahování do mezipaměti. Toto řešení může být výhodné zejména v případě, že je extrakce dat nákladná. Existuje mnoho vyrovnávacích serverů, jako je memcached nebo redis . Tímto způsobem můžete vynechat tolik databázových připojení, ale pouze pro extrakci dat.
  • Další moduly úložiště :Vždy můžete přejít na výkonnější motory, pokud vám váš současný neposkytuje to, co potřebujete. To je samozřejmě možné pouze tehdy, pokud vám to vaše potřeby dovolí. V současné době existují enginy NoSQL, mnohem výkonnější než RDBMS, které podporují sharding nativně a můžete je lineárně škálovat s minimálním úsilím. Existují také řešení založená na Lucene s výkonnými funkcemi fulltextového vyhledávání, které vám poskytují stejné automatické sharding. Ve skutečnosti jediným důvodem, proč byste měli používat tradiční RDBMS, je atomické chování transakcí. Pokud však transakce nejsou nutností, existují mnohem lepší řešení než RDBMS.


  1. Postgres Copy from Variable with CSV data

  2. Analýza názvů tabulek a sloupců z SQL/HQL Java

  3. Tipy pro ukládání záloh PostgreSQL na Amazon AWS

  4. Existují nějaká úskalí / věci, které potřebujete vědět při přechodu z MyISAM na InnoDB