MySQL har en användbar funktion som heter " query cache " som förbättrar MySQL prestanda avsevärt när den är aktiverad . Frågan cache innehåller texten av ett SELECT-uttryck tillsammans med den enligt resultat som skickas till klienten . När de identiska uttalanden mottas i framtiden , söker servern för resultaten från frågan cache istället för att utföra de uppgifter igen . Frågan cache delas också mellan sessioner , alltså en fråga resultat genereras av en användare kan användas av en annan användare. Frågan cachen är tillämplig i sammanhang där dina tabeller inte ofta ändras och servern tar emot ett stort antal identiska frågor kring borden . Däremot har frågan cache olika begränsningar . Transparent Caching
Query cache är helt transparent för applikationen. Detta kommer att orsaka problem i vissa omständigheter. När query cache är aktiverat , kan du alltid få frågeresultat även när de relaterade tabellerna är låsta och uppdateras . Låsa tabeller betyder oftast tabellerna är otillgängliga men frågeresultat från query cache kommer fortfarande att komma till användarna .
Caching Begränsning
query cache fungerar inte för sub - väljer , inline vyer , eller föreningen . Frågorna måste vara exakt samma för att utnyttja resultatet från frågan cache , vilket innebär att om du sätter dynamiska synpunkter i frågan med fler mellanslag eller annat ärende , får du ett annat resultat från query cache . En annan begränsning är bara urvalsfrågor cachad . Undvik kommentarer eller blanksteg i början av frågan som query cache endast kontrollerar den första bokstaven i fråga och endast om det är " S " betyder att fortsätta att gå caching frågeresultat .
Tabell Level finkornigt Ogiltigförklarande
p Om tabellerna ändras eller uppdateras , är alla frågor som härrör från tabellerna ogiltigförklaras omedelbart . De flesta av frågorna ändras inte , men MySQL kan inte identifiera ändrade dem , så det tar bort alla av dem . Detta är den största anledningen som begränsar query cache effektivitet . Speciellt med hög write ansökan exempelvis forum , är query cache verkningsgraden mycket låg på grund av denna begränsning .
Fragmentering Over Time
Med tiden blir query cache fragmenterad och mindre effektiv. "Spola QUERY cache" -kommandot kan användas för sökningar cache defragmentering , men det kan blockera query cache till förmån för en stor fråga cache , vilket är olämpligt för online-applikationer .