Als ontwikkelaar en DBA die vaak de voorkeur heeft voor technologie, maar als we een grote organisatie runnen, moeten we meer tegemoetkomen aan alle technologieën. Een van mijn grote bankklanten gebruikt meerdere databases om verschillende transacties uit te voeren. Ze gebruiken ook veel verschillende caching-oplossingen voor hun bedrijf, evenals hoogwaardige hardware. Ik had een zeer interessant gesprek met mijn klant over het onderwerp hoe query's op te halen, niet uit de cache voor MySQL en SQL Server, we bespraken SQL_NO_CACHE en OPTION (RECOMPILE). We hebben het besproken tijdens de Uitgebreide statuscontrole voor databaseprestaties .
Laten we vandaag twee verschillende voorbeelden bekijken voor MySQL en SQL Server. Beide relationele databases maken gebruik van de geheugencache om ons de gegevens te retourneren. Laten we eens kijken hoe we een query kunnen schrijven waarbij we de resultaten in de cache niet gebruiken, maar onze gegevens rechtstreeks van de SQL Server-schijf halen en niet uit de cache.
SQL Server Query – OPTIE (HERCOMPIEREN)
SELECT Columnname FROM TableName OPTION(RECOMPILE)
MySQL-query SQL_NO_CACHE
SELECT SQL_NO_CACHE Columnname FROM TableName OPTION(RECOMPILE)
Wanneer u SQL_NO_CACHE en OPTION (RECOMPILE) gebruikt, halen de relationele databases (respectievelijk MySQL en SQL Server) de gegevens rechtstreeks van de schijf op in plaats van wat er in de cache is opgeslagen.
Hier zijn een paar relevante blogposts over hetzelfde onderwerp, die je misschien interessant vindt.
- SQL SERVER – Lijstqueryplan, cachegrootte, tekst en aantal uitvoeringen
- SQL SERVER – Het oudste queryplan uit de cache vinden
- SQL SERVER – Plan cache en data cache in geheugen
- SQL SERVER – Opgeslagen procedure – Cache opschonen en buffer opschonen
- SQL SERVER – Verwijder alle Query-cacheplannen die in een bepaalde periode niet zijn gebruikt
- SQL SERVER – Script om een samengesteld plan met parameters uit de cache te krijgen
- SQL SERVER – Cache plannen – Ophalen en verwijderen – Een eenvoudig script
- SQL SERVER – 2017 – Script om procedurecache op databaseniveau te wissen