Co je ukládání do mezipaměti SQL?


Nejlepší odpověď

Jak Scott McNulty dříve odpověděl na tuto otázku, ukládání do mezipaměti SQL je ukládání sad výsledků generovaných jako výsledek dotazu proti databáze a použití kopie výsledku pro pozdější výsledky. Jak již bylo řečeno, v této otázce je mnohem víc než jen „ukládání do mezipaměti“. Skutečným problémem není ukládání do mezipaměti, nejtěžší je zneplatnění. Ukládání informací není obtížné, vědět, kdy jsou neplatné, je.

Ukládání do mezipaměti se také týká druhého, jemnějšího problému, a to je vliv mezipaměti na latenci sítě. Většina řešení mezipaměti funguje jako nezávislý server, podobně jako databáze. Aby bylo možné dotazovat mezipaměť, je třeba provést zpáteční cestu přes síť, opět jako do databáze. Pokud mezipaměť spolehlivě nemá odpověď, A odpoví rychleji než databáze, je velmi obtížné skutečně zlepšit výkon mezipaměti.

Chcete-li optimálně ukládat do mezipaměti SQL, potřebujete řešení, které může vyřešit několik problémů:

  1. Jaký obsah by měl být uložen do mezipaměti?
  2. Pokud existuje výsledek uložený v mezipaměti, měl by být považován za neplatný?
  3. Pokud dojde k zásahu do mezipaměti rychlost je příliš nízká, přizpůsobí se logika mezipaměti automaticky tak, aby přestala ukládat do mezipaměti a přestala vyhledávat, aby se zabránilo trestu?

Skutečnost spočívá v tom, že zohlednit většinu rohových případů je velmi složité sada logiky pro zajištění optimálního scénáře výkonu pro ukládání do mezipaměti. To není tak jednoduché jako implementace modulu mezipaměti, jako je Redis nebo Hazelcast do vaší aplikace. . Místo toho potřebujete inteligentní modul mezipaměti, který dokáže zkontrolovat, která data se mění, automaticky zneplatnit data a jinak optimalizovat požadavky, které mohou být vzneseny na externí modul mezipaměti, oproti tomu, co se dělá proti databázi.

Jeden takový motor pochází od Heimdall Data (odmítnutí odpovědnosti, jsem technickým ředitelem společnosti Heimdall Data). Stroj Heimdall automaticky ukládá do mezipaměti obsah směrovaný z aplikace do databáze buď jako ovladač JDBC, nebo jako proxy na úrovni protokolu, automaticky zneplatňuje obsah a optimalizuje také obsah uložený v mezipaměti. To umožňuje vývojářům soustředit se na funkce, nikoli na mezipaměť, což v některých případech může ušetřit 20–40\% vývoje a času pro ladění aplikace.

Odpověď

Mezipaměť obecně ukládá výsledky procesu, který je náročný na zdroje, aby zdroje nemusel být znovu utrácen.

V SQL; vždy je to specifické pro technologii dodavatele. MS-SQL, Oracle, MySQL a PostGres mají různé možnosti pro ukládání do mezipaměti. Výsledky, dotaz, dokonce i plán provádění dotazu lze uložit pro pozdější pokusy o zpracování stejných informací.

V případě změny podkladových dat má systém obvykle mechanismus označit, že informace v mezipaměti jsou „špinavé“ a již nejsou plně použitelné; takže dotaz může být systémem znovu spuštěn.

Toto vidíte neustále. Jak dlouho můj dotaz trvá? Proč je vždy rychlejší, když ji spustím podruhé? To je důvod, proč. Systém si účinně pamatuje, na co jste se ho předtím zeptali, a dává vám odpověď, kterou si pamatuje z té doby.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *