Användbara knep för att hitta och fixa långsamma WordPress-databasfrågor

1

Måttliga SQL-förfrågningar kan slå ut WordPress-applikationsutvecklingswebbplatsens exekvering. Då och då är måttliga förfrågningar en efterverkan av otillräckligt strukturerad SQL som aldrig borde ha gjorts på det sättet.

Dessutom var måttliga förfrågningar i vissa fall i själva verket snabba frågor vid en viss tidpunkt – men allt eftersom sajten blev mer erfaren blev förfrågningen långsammare och långsammare, maktlös att hålla sig medveten om den utökade databasen.

Trots hur SQL blev måttlig bör man undersöka ett par metoder för att upptäcka och åtgärda problemfrågor i WordPress-applikationsutvecklingen. Här och där kan man behöva vissa webbapplikationer och kanske inte har tillräcklig energi, lämplighet eller utgiftsplan för att göra anpassade förbättringar. Att skapa utan några förberedelser kan vara svaret på vissa problem, men det kan ta längre tid än att börja från en aktuell kodbas. WordPress var från början uppbyggt som ett bloggsteg, och det fortsätter att vara enastående för det. Hur det än må vara, så har det avancerat till ett fullständigt utvecklat innehållshanteringssystem (CMS) och, för ett fåtal ändamål, kan det till och med skapa en stark webbapplikation – snabbt och till en fundamentalt lägre utgiftsplan än anpassade förbättringar. Medan WordPress erbjuder inbyggda utvecklingsapplikationer, den kan användas för webbapplikationer, för att göra den extra användbar. De inneboende sid- och inläggsstrukturerna kan användas till många saker, men om man behöver anpassad information och fält för att inkluderas, sökas eller ifrågasättas, kontrolleras och visas, krävs det extra arbete.

Hitta långsamma frågor

Att hitta ursprunget till moderata frågor inkluderar två steg:

  1. Att ta reda på vilka frågor som verkligen är de moderata.
  2. Identifiera programmet som driver dem.

Man bör ta en titt på två moduler och en SaaS som kan göra det möjligt för dem att upptäcka måttliga förfrågningar.

Fråga Monitor

För att ta del av information om sidan som körs för närvarande kan denna modul användas. Trots ett helt kluster av data om WordPress interna aktiviteter ger det en punkt för punkt uppdelning av:

  • Hur många frågor uppstod på denna begäran?
  • Vilken förfrågan på sidan tog längst tid?
  • Vilken kapacitet investerade mest energi i SQL-frågor?
  • Oavsett om dessa förfrågningar härrörde från moduler, ämnen eller WordPress-centret

Förfrågningsskärmen känner till och med igen moderata frågor med irriterande rött innehåll, vilket gör det mycket enkelt att välja problemet SQL.

Debug Bar

Ett annat fenomenalt instrument för att hitta frostigt måttlig SQL är den gamla, pålitliga Debug Bar-modulen. Debug Bar tillhandahåller en information om WordPress inre funktion när en sida laddas med saker som:

  1. Parametrar för WP_Query
  2. Begär data (samordnar räkneförnyade regler)
  3. SQL-förfrågningar producerade av denna sida

För att aktivera SQL-följning i felsökningsfältet bör användaren göra en poäng att tillåta SAVEQUERIES någonstans på webbplatsen – troligen i wp-config.php

Varning: SAVEQUERIES påverkar exekveringen på webbplatsen och bör förmodligen inte användas på en generationsserver. Den kan dock användas på en avanceringsmaskin.

Att hitta den måttliga SQL är inte extremt lätt med Debug Bar. Till exempel ger den inte de sorterbara tabellerna eller har måttliga förfrågningar för användaren. Vad Debug Bar tillhandahåller är en kapacitetsföljning som riktar användaren exakt mot riktningen av ursprunget till en fråga.

Detta är en sammanfattning av de dokument som laddas och de kapaciteter som blir resultatet i den förfrågan som exekveras. Oftare än inte är man sugen på den absoluta fortsätt-delen på nedgången; det är här den moderata frågan utfördes och där man bör börja sin jakt. Det bekväma med att ha inställningen för varje kapacitet som ställer den här frågan är att den kan avslöja insikter om varför SQL exekveras i alla fall.

NewRelic

NewRelic är en administration som mäter och screenar utförandet av webbapplikationsutveckling, inklusive WordPress applikationsutveckling. Administrationen ger massor av data om utförandet av webbplatsen. Det är allt annat än svårt att tappa all riktning i informationen NewRelic ger användaren varje minut detaljer för SQL-förfrågningar.

Det finns två anmärkningsvärda kontraster mellan NewRelic och modulerna vi hänvisade till tidigare:

  1. NewRelic ger mycket mer insikt om exekveringen av PHP, ner till den exakta beräkningen av den tid som spenderas i varje funktion
  2. NewRelic spårar varje begäran till webbplatsen utom synhåll, så man kan referera till den senare för att upptäcka måttlig SQL. Modulerna ger honom bara den nuvarande sidan.

Det är viktigt att NewRelic har en gratis arrangemangsnivå som ger allmän information om hur sajten körs, men att man måste gå upp till ett betalt arrangemang för de snygga oddsen för att kontrollera enstaka krav och hitta måttliga förfrågningar.

Förstå en långsam fråga med EXPLAIN

Fram till denna punkt har enheterna säkrats för att hitta måttliga frågor. För närvarande borde det vara känt varför dessa förfrågningar hindrar saker och ting.

MySQL EXPLAIN-nyckelordet kan göra det möjligt att förtydliga vad som händer. Att lägga till EXPLAIN i början av en förfrågan indikerar hur MySQL exekverar en fråga. För invecklade förfrågningar kan EXPLAIN hjälpa till att särskilja måttliga fokus i SQL:erna, till exempel måttliga underfrågor eller slösaktiga aktiviteter.

Åtgärda långsamma frågor

Eftersom man inser att frågorna är måttliga, och EXPLAIN har gett avslöjat för användaren varför det är det, bör man titta på ett par val för att fixa dessa dåsiga problem.

Alternativ 1: Vrid på frågan

Det kan finnas en fråga som gör att skärmen på Redigera inlägg blir väldigt långsam. Förfrågan var en del av metaboxen för Custom Fields.

Den bestämda biten av SQL tar med en meta_keys-lista från tabellen ks29so_postmeta som med all sannolikhet inte börjar med tecknet på understreck. GROUP BY-förklaringen innebär att varje resultat är speciellt.

Genom att köra denna förfrågan flera gånger, här är tiden i vilken utsträckning det kan ta:

1,7145 sek

1,7911 sek

1,8076 sek

1,7707 sek

1,8456 sek

Man kan utveckla en fråga som resulterar i liknande resultat. Den måste väljas som unika meta_keys. Exceptionell är ett likvärdigt ord för särskilt, vilket bara råkar vara en SQL-förklaring!

Alternativ 2: Lägga till ett index

Medan användaren kör en SQL-fråga på en uppsättning MySQL-tabell, måste den undersöka hela tabellen för att förstå vilka rader som är viktiga för den specifika förfrågan. När bordet blir enormt börjar det ta ganska lång tid.

Det är där MySQL-poster kommer in. Listor tar informationen i en tabell och ordnar den så att informationen blir mycket mindre krävande att hitta. Genom att sortera ut informationen på ett specifikt sätt hjälper filerna att minska mängden filtrering som MySQL åstadkommer för varje förfrågan.

Filer kan läggas till enstaka segment eller över olika sektioner.

Med en fil på meta_key, liknar den allra första SQL-frågestunden något detta:

0,0041 sek

0,0023 sek

0,0030 sek

0,0025 sek

0,0019 sek

Det här är extremt smart.

Ett uttryck för varning på filer: Varje gång INSERT gör en kolumn eller UPDATE används på en tabell, ombestäms listan, vilket kan vara en dyr aktivitet. Records gör det snabbare att läsa från tabellen, men det går långsammare att skriva till den. Även om en korrekt placerad indexlista kan fungera extremt bra, bör man inte vara besatt av den utan att kontrollera listans allmänna effekter på databasen.

Alternativ 3: Cachelagra frågeresultaten

När man väl inser att det finns en måttlig fråga. Istället för att ändra frågan kan det finnas ett scenario där det bara lägger undan efterverkningarna av utredningen. På så sätt skulle man begränsa hur regelbundet undersökningen utfördes, och han skulle få ett ”frikort” oftare än inte.

WordPress Transients API är ett av sätten att reservera frågorna. Transienter används för att undanröja konsekvenserna av kostsamma uppgifter, t.ex.

  • Förfrågningar till externa webbplatser (till exempel att få pågående Facebook-inlägg)
  • Långsamma klumpar av hantering (till exempel söker enorma strängar med en sedvanlig artikulation)
  • Långsamma databasförfrågningar!
Att välja ett tillvägagångssätt

Det finns ett antal alternativ som har lagts fram, och det finns med största sannolikhet sjutton olika tillvägagångssätt för att förstå denna moderata utredning. Vilket förhållningssätt ska man ta?

Val 1 (ändrar frågan) gav lysande resultat. Möjligheten bör dock övervägas att den modifierade utredningen generellt sett inte har liknande resultat. Man skulle omedvetet kunna borra koden med en något avig fråga.

Alternativ 2 (inklusive en post) är inte ständigt tänkbar beroende på tabellen och avsnitten som används av utredningen. På grund av WordPress applikationsutvecklingscentertabeller, skulle man behöva stressa över de andra effekterna av posterna:

  • Förväntar centrumuppfriskningsrutinen ytterligare listor?
  • Kommer inkludering av en fil att moderera olika förfrågningar, liknande INSERT och UPDATE?

Alternativ 3 (reservation av resultaten med hjälp av hemlösa) har obetydlig effekt – användaren behöver inte ändra den första förfrågan och det finns inget behov av att justera databasstrukturen.

Vanligtvis väljer folk alternativ 3. I ens specifika fall kan han välja ett annat alternativ beroende på frågan han fixar eller att den specifika webbplatsen har SQL-problem. Det finns verkligen inte ett svar som passar alla på de flesta avrättningsfrågor, så man får skilja på andras beslut – eller försök var och en av de tre utan ett ögonblicks fördröjning!

Håller dig uppdaterad

Den har skisserat en genuin fråga här. Boxen med anpassade fält på CSS-Tricks var verkligen en brottsling för några extremt måttliga databasförfrågningar. Den har också skisserat olika vägar mot potentiella arrangemang.

Utforma helt nya idéer

Det finns olika metoder man kan använda för att försöka påskynda utförande av frågor som inkluderar mer arbete än att bara justera förfrågan eller inkludera en lista. En av de långsammaste delarna av frågan är arbetet som görs för att sammanfoga tabellerna för att gå från klient-id till artikel-id, och man måste göra detta för varje klient.

Man kan avnormalisera informationen genom att göra en tabell som lagrar tillståndsinformationen, tillsammans med klient-id och artikel-id för alla licenser och helt enkelt fråga mot det för en viss klient. Man skulle behöva modifiera tabellen med MySQL-utlösare på INSERT/UPDATE/DELETE till licenstabellen (eller andra som förlitar sig på hur informationen kan förändras), men detta skulle avsevärt förbättra utförandet av att ifrågasätta den informationen.

Således, om olika kopplingar modererar frågan i MySQL, kan det vara snabbare att dela upp förfrågan i minst två artikulationer och exekvera dem oberoende i PHP och efteråt samla och kanalisera resultaten i kod.

Inspelningskälla: instantshift.com

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer