Jako vývojář a DBA často preferuje technologii, ale pokud provozujeme velkou organizaci, musíme být vstřícnější ke všem technologiím. Jeden z mých velkých bankovních klientů používá několik databází pro provádění různých transakcí. Pro své podnikání také používají spoustu různých řešení pro ukládání do mezipaměti a také špičkový hardware. Měl jsem velmi zajímavý rozhovor se svým klientem na téma, jak získávat dotazy, nikoli z mezipaměti pro MySQL a SQL Server, diskutovali jsme o SQL_NO_CACHE a OPTION (RECOMPILE). Diskutovali jsme během Komplexní kontroly výkonu databáze .
Podívejme se dnes na dva různé příklady pro MySQL a SQL Server. Obě relační databáze využívají výhod mezipaměti, aby nám vrátila data. Podívejme se, jak můžeme napsat dotaz, kde nebudeme používat výsledky uložené v mezipaměti, ale získáme data přímo z disku SQL Serveru a nikoli z mezipaměti.
Dotaz na SQL Server – MOŽNOST (ZNOVU KOMPILOVAT)
SELECT Columnname FROM TableName OPTION(RECOMPILE)
Dotaz MySQL SQL_NO_CACHE
SELECT SQL_NO_CACHE Columnname FROM TableName OPTION(RECOMPILE)
Když použijete SQL_NO_CACHE a OPTION (RECOMPILE), relační databáze (MySQL a SQL Server) přímo získávají data z disku, nikoli data uložená v mezipaměti.
Zde je několik relevantních blogových příspěvků na stejné téma, které by vás mohly zajímat.
- SQL SERVER – seznam plánu dotazů, velikost mezipaměti, text a počet spuštění
- SQL SERVER – vyhledání nejstaršího plánu dotazů z mezipaměti
- SQL SERVER – Plánování mezipaměti a mezipaměti dat v paměti
- SQL SERVER – Uložená procedura – Vyčistit mezipaměť a vyrovnávací paměť
- SQL SERVER – Odeberte všechny plány uložené v mezipaměti dotazů, které se v určitém období nepoužívají
- SQL SERVER – skript pro získání kompilovaného plánu s parametry z mezipaměti
- SQL SERVER – Plán Cache – Načtení a odebrání – Jednoduchý skript
- SQL SERVER – 2017 – skript pro vymazání mezipaměti procedur na úrovni databáze