Beginning med MySQL version fyra , är det inte längre nödvändigt att skriva egna PHP- kod för att cache MySQL frågeresultat . MySQL innehåller en inbyggd query cache som kommer att gömma resultat för identiska " SELECT " uttalanden , inklusive förberedda uttalanden . För att använda cache , redigera konfigurationsfilen och slå på den . När funktionen är aktiverad , men har du möjlighet att åsidosätta huruvida en fråga är cachad genom att skicka ett nyckelord i den fråga du skickar från PHP till MySQL . Granska begränsningar frågan cache för att se till att du förstår hur cachen fungerar innan du skriver ett PHP-skript med frågan cache i åtanke . MySQL Query Cache
MySQL Query cache fångar en frågeuttryck från en " SELECT " fråga och alla resultat och placerar dem i en temporär cache på hårddisken eller i minnet . När ett PHP-skript utfärdar en identisk fråga till en som var tidigare drivit och cachade , är resultaten serveras från cachen istället för databasen . Detta kan avsevärt minska den tid som krävs för att ge resultat , vilket förbättrar prestanda PHP-program .
Begränsningar
MySQL Query cache fungerar bara med " ; SELECT " frågor och kommer bara cache fulla frågor , inte subselects eller inline vyer . Frågan cache cachar förberedda uttalanden men kommer inte cachedatabasen transaktioner . Räkna inte kommentarer i början av frågor i PHP uttalanden . Om en frågevillkoret inte börjar med bokstaven " S , " MySQL kommer att avgöra det är inte en " SELECT " fråga och kommer inte cacha resultatet . Till exempel :
//Gör inte detta $ query = ' /* $ namn är nuvarande medlem * /SELECT * FROM medlemmar WHERE namn = $ name ' ;//Gör detta istället $ query = " SELECT * FROM medlemmar WHERE namn = $ name /* $ namn är nuvarande medlem * /' , $ result = mysql_query ( $ query ) ; Addera ditt Query Cache Setup
för att konfigurera MySQL Query cache , redigera MySQL konfigurationsfil på webbservern , exempelvis " /etc /mysql /my.cnf " på en Apache webbserver , och ställ in " query_cache_type " och " query - cache - size " variabler . För " query_cache_type , " värdet noll stänger av cache , man slår på cachen , och två uppsättningar av cache vara Välj maximal storlek för frågan cache , vanligen mellan 20 och 100 " on demand ". megabyte , och lägga till följande rader i slutet av konfigurationsfilen för att aktivera frågan cache på och ställa in storleken till 20 megabyte :
query - cache - typ = 1query - cache - size = 20M
Caching " On Demand "
p Om du vill kontrollera vilka frågeresultat är cachad från din PHP-skript , ställ in " query - cache - typ " till " 2 " , och passera nyckelordet " SQL_CACHE " efter " SELECT " uttalande i en PHP- fråga . Till exempel :
$ query = " SELECT SQL_CACHE * FROM kunder WHERE Kund_ID = " 0089324 " ; $ result = mysql_query ( $ query ) ;
p Om frågan cache är påslagen och du inte vill att cacha en viss fråga , skicka nyckelordet " SQL_NO_CACHE " från PHP . Till exempel :
$ query = " SELECT SQL_NO_CACHE * FROM kunder WHERE Kund_ID = " 0089324 " ; $ result = mysql_query ( $ query ) ;