Som utvecklare och DBA som ofta har föredragen teknik men om vi driver en stor organisation måste vi vara mer tillmötesgående till alla teknologier. En av mina stora bankkunder använder flera databaser för att göra olika transaktioner. De använder också massor av olika cachningslösningar för sin verksamhet såväl som toppmodern hårdvara. Jag hade en mycket intressant konversation med min klient om hur man hämtar frågor, inte från cachen för MySQL och SQL Server, vi diskuterade SQL_NO_CACHE och OPTION (RECOMPILE). Vi diskuterade under den omfattande hälsokontrollen av databasprestanda .
Låt oss se två olika exempel idag för MySQL och SQL Server. Båda relationsdatabaserna utnyttjar minnescachen för att returnera data till oss. Låt oss se hur vi kan skriva en fråga där vi inte kommer att använda de cachade resultaten utan direkt hämta våra data från SQL Server-disken och inte från cachen.
SQL-serverfråga – ALTERNATIV (OMKOMPILERA)
SELECT Columnname FROM TableName OPTION(RECOMPILE)
MySQL-fråga SQL_NO_CACHE
SELECT SQL_NO_CACHE Columnname FROM TableName OPTION(RECOMPILE)
När du använder SQL_NO_CACHE och OPTION (RECOMPILE), hämtar relationsdatabaserna (MySQL respektive SQL Server) data direkt från disken snarare än vad som lagras i cachen.
Här är några relevanta blogginlägg om samma ämne, som du kan tycka är intressanta.
- SQL-SERVER – Lista frågeplan, cachestorlek, text och antal körningar
- SQL-SERVER – Hitta den äldsta frågeplanen från cachen
- SQL-SERVER – Planera cache och datacache i minnet
- SQL-SERVER – lagrad procedur – rensa cache och rensa buffert
- SQL-SERVER – Ta bort alla Cachade frågeplaner som inte används under en viss period
- SQL-SERVER – skript för att få en kompilerad plan med parametrar från cachen
- SQL-SERVER – Planera cache – Hämta och ta bort – Ett enkelt skript
- SQL SERVER – 2017 – Skript för att rensa procedurcache på databasnivå