Hyödyllisiä temppuja hitaiden WordPress-tietokantakyselyjen etsimiseen ja korjaamiseen

2

Kohtalaiset SQL-kyselyt voivat häiritä WordPress-sovelluskehityssivuston suoritusta. Joskus maltilliset kyselyt ovat seurausta riittämättömästi rakenteellisesta SQL:stä, jota ei olisi koskaan pitänyt tehdä sillä tavalla.

Lisäksi joissakin tapauksissa maltilliset tiedustelut olivat todellisuudessa nopeita kysymyksiä tietyssä vaiheessa – mutta sivuston kehittyessä kysely hidastui ja hidastui, ei voimaton pysyä tietoisena laajenevasta tietokannasta.

Huolimatta siitä, kuinka SQL:stä tuli maltillinen, kannattaa tutkia pari tapaa löytää ja korjata ongelmakysymyksiä WordPress-sovelluskehityksessä. Siellä täällä saattaa tarvita tiettyä verkkosovellusta, eikä sillä välttämättä ole riittävästi energiaa, kykyjä tai kulutussuunnitelmaa mukautetun parannuksien tekemiseen. Luominen ilman valmistelua voi olla vastaus joihinkin ongelmiin, mutta se voi kestää kauemmin kuin nykyisestä koodikannasta aloittaminen. WordPress rakennettiin alun perin blogivaiheeksi, ja se on edelleen erinomainen siinä. Oli miten oli, se on edennyt täysin toimivaksi sisällönhallintajärjestelmäksi (CMS) ja voi muutamiin tarkoituksiin jopa luoda vahvan verkkosovelluksen – nopeasti ja olennaisesti pienemmällä suunnitelmalla kuin räätälöity parannus. Vaikka WordPress tarjoaa sisäänrakennettuja kehityssovelluksia, sitä voidaan käyttää verkkosovelluksissa, jotta se olisi erityisen hyödyllinen. Sisäisiä sivu- ja postausrakenteita voidaan hyödyntää moneen asiaan, mutta siinä tapauksessa, että tarvitsee mukautettuja tietoja ja kenttiä sisällytettäväksi, etsittäväksi tai kyseenalaiseksi, valvottavaksi ja näyttäväksi, vaatii lisätyötä.

Hitaiden kyselyjen löytäminen

Maltillisten kysymysten alkuperän löytäminen sisältää kaksi vaihetta:

  1. Selvittää, mitkä kysymykset ovat todella maltillisia.
  2. Niitä käyttävän ohjelman tunnistaminen.

On syytä tarkastella kahta moduulia ja yhtä SaaS-palvelua, joiden avulla he voivat löytää kohtuullisia kyselyjä.

Kyselyn valvonta

Tätä moduulia voidaan käyttää tällä hetkellä käynnissä olevan sivun tietojen saamiseksi. Huolimatta kokonaisesta tietojoukosta WordPressin sisäisistä toiminnoista, se antaa pistekohtaisen erittelyn seuraavista:

  • Kuinka monta kysymystä tuli esille tämän vaatimuksen johdosta?
  • Mikä sivulla oleva kysely vei eniten aikaa?
  • Mitkä kapasiteetit investoivat eniten energiaa SQL-kysymyksiin?
  • Olivatpa nämä tiedustelut peräisin moduuleista, oppiaineista tai WordPress-keskuksesta

Kyselynäyttö tunnistaa jopa kohtalaiset kysymykset, joiden sisältö on ahdistavaa punaista, mikä tekee ongelman SQL:n valitsemisesta erittäin helppoa.

Debug Bar

Toinen ilmiömäinen väline pakkasen maltillisen SQL:n löytämiseen on vanha, luotettava Debug Bar -moduuli. Debug Bar tarjoaa yhden tiedon WordPressin sisäisestä toiminnasta, kun sivu on ladattu sellaisilla asioilla kuin:

  1. WP_Queryn parametrit
  2. Pyydä tietoja (lasketaan uudistussääntöjen koordinointi)
  3. Tämän sivun tuottamat SQL-kyselyt

Ottaakseen SQL-seurannan käyttöön virheenkorjauspalkissa käyttäjän tulee sallia SAVEQUERIES jossain sivustossa – todennäköisesti osoitteessa wp-config.php

Varoitus: SAVEQUERIES vaikuttaa suoritukseen sivustolla, eikä sitä luultavasti pitäisi käyttää sukupolvipalvelimessa. Sitä voidaan kuitenkin käyttää edistyksellisessä koneessa.

Kohtuullisen SQL:n löytäminen ei ole äärimmäisen helppoa Debug Barin avulla. Se ei esimerkiksi anna lajiteltavia taulukoita tai tarjoa kohtuullisia kyselyitä käyttäjälle. Debug Bar tarjoaa kapasiteettiseurannan, joka ohjaa käyttäjän tarkasti kysymyksen alkuperän suuntaan.

Tämä on yhteenveto ladatuista asiakirjoista ja suoritettavan kyselyn tuloksena olevista kapasiteeteista. Useammin kuin ei, yksi on innokas ehdoton jatka osio kulunut; tämä on paikka, jossa kohtalainen kysymys suoritettiin ja mistä metsästys tulisi aloittaa. Kätevä asia jokaisen tämän kysymyksen esittävän kapasiteetin asettamisessa on, että se voi paljastaa käsityksen siitä, miksi SQL joka tapauksessa suoritettiin.

UusiRelic

NewRelic on hallinto, joka mittaa ja seuloa verkkosovelluskehityksen toteutusta, mukaan lukien WordPress-sovelluskehitys. Hallinto antaa metrisen määrän tietoa sivuston toteutuksesta. On kaikkea muuta kuin vaikeaa menettää suunnan tajua tiedoista, jotka NewRelic antaa käyttäjälle joka minuutti yksityiskohtia SQL-kyselyihin.

NewRelicin ja aiemmin mainitsemiemme moduulien välillä on kaksi huomionarvoista kontrastia:

  1. NewRelic antaa paljon enemmän tietoa PHP:n suorittamisesta aina kunkin toiminnon suorittamiseen käytetyn ajan tarkkaan laskemiseen asti.
  2. NewRelic seuraa jokaista pyyntöä sivustolle poissa näkyvistä, joten voit viitata siihen myöhemmin löytääksesi kohtuullisen SQL:n. Moduulit antavat hänelle vain tämän sivun.

On tärkeää, että NewRelicissä on ilmainen järjestelytaso, joka antaa yleistä tietoa sivuston toteutuksesta, mutta joutuu kuitenkin siirtymään maksulliseen järjestelyyn hienojen kertoimien ja päätteiden vuoksi yksittäisten vaatimusten tarkistamiseksi ja kohtuullisten tiedustelujen löytämiseksi.

Hitaan kyselyn ymmärtäminen EXPLAIN-sovelluksella

Tähän asti laitteet on suojattu kohtuullisten kysymysten löytämiseksi. Tällä hetkellä pitäisi tietää, miksi nuo tiedustelut haittaavat asioita.

MySQL EXPLAIN -tunnussana voi auttaa selventämään, mitä tapahtuu. EXPLAIN-komennon lisääminen kyselyn alkuun osoittaa, kuinka MySQL suorittaa kysymyksen. Monimutkaisissa kyselyissä EXPLAIN voi auttaa erottamaan SQL:issä kohtalaiset painopisteet, kuten maltilliset alikyselyt tai turha toiminta.

Hitaiden kyselyjen korjaaminen

Koska on ymmärretty, että kyselyt ovat kohtalaisia ​​ja EXPLAIN on paljastanut käyttäjälle miksi näin on, on syytä pohtia paria vaihtoehtoa näiden uneliaisten ongelmien korjaamiseksi.

Vaihtoehto 1: Kysymyksen kääntäminen

Saattaa olla kysymys, joka hidastaa Muokkaa viestiä -näyttöä. Kysely oli osa Custom Fieldsin metalaatikosta.

SQL:n varma osa on meta_keys-listan tuominen ks29so_postmeta-taulukosta, joka ei todennäköisesti ala alaviivalla. GROUP BY -selitys tarkoittaa, että jokainen tulos on erityinen.

Suorita tämä kysely useita kertoja, tässä on aika, missä määrin se voi kestää:

1,7145 s

1,7911 s

1,8076 s

1,7707 s

1,8456 s

Voidaan kehittää kysely, joka johtaa samanlaisiin tuloksiin. Se on valittava ainutlaatuiseksi meta_keys. Poikkeuksellinen on vastaava sana tietylle, joka sattuu olemaan SQL-selitys!

Vaihtoehto 2: Hakemiston lisääminen

Kun käyttäjä suorittaa SQL-kysymystä määrätyssä MySQL-taulukossa, hänen on tutkittava koko taulukko ymmärtääkseen, mitkä rivit ovat tärkeitä tietyn kyselyn kannalta. Siinä vaiheessa, kun pöytä kasvaa valtavaksi, tarkastus alkaa kestää melkoisen kauan.

Siellä MySQL-tietueet tulevat sisään. Listat ottavat tiedot taulukossa ja järjestävät sen siten, että tiedon löytäminen on paljon vähemmän vaativaa. Lajittelemalla tiedot tietyllä tavalla tiedostot auttavat vähentämään MySQL:n kunkin kyselyn suodatuksen määrää.

Tiedostot voidaan lisätä yksittäisiin segmentteihin tai eri osioihin.

Kun tiedosto on meta_key, ensimmäinen SQL-kyselytunti muistuttaa hieman tätä:

0,0041 s

0,0023 sekuntia

0,0030 sekuntia

0,0025 sekuntia

0,0019 sekuntia

Tämä on erittäin älykästä.

Hälytyksen ilmaus tiedostoissa: Aina kun INSERT tekee sarakkeen tai UPDATE-toimintoa käytetään af-taulukossa, luettelo määritetään uudelleen, mikä voi olla kallista toimintaa. Tietueet nopeuttavat lukemista taulukosta, mutta siihen kirjoittaminen on hitaampaa. Vaikka oikein sijoitettu hakemistolista voi toimia erittäin hyvin, siihen ei pidä olla pakkomielle tarkistamatta listan yleisiä vaikutuksia tietokantaan.

Vaihtoehto 3: Tallenna kyselyn tulokset välimuistiin

Kun on tajuttu, että on maltillinen kysymys. Kysymyksen muuttamisen sijaan voi olla skenaario, jossa se vain poistaa tutkimuksen jälkivaikutukset. Tällä tavalla kyselyn suorittamisen säännöllisyyttä rajoitettaisiin ja hän saisi useammin ”ilmaispassin”.

WordPress Transients API on yksi tavoista varata kyselyt. Transientteja hyödynnetään kalliiden tehtävien seurausten poistamiseen, esim.

  • Pyynnöt ulkopuolisille sivustoille (esimerkiksi meneillään olevien Facebook-viestien saaminen)
  • Hidasta käsittelyä (esimerkiksi valtavien kielten etsiminen tavanomaisella artikulaatiolla)
  • Hitaat tietokantakyselyt!
Lähestymistavan valitseminen

On olemassa useita vaihtoehtoja, ja on todennäköisimmin seitsemäntoista eri lähestymistapaa tämän maltillisen tutkimuksen ymmärtämiseksi. Kumpaa lähestymistapaa pitäisi ottaa?

Vaihtoehto 1 (kysymyksen muuttaminen) tuotti loistavia tuloksia. On kuitenkin otettava huomioon se mahdollisuus, että muutetulla kyselyllä ei yleensä ole samanlaisia ​​tuloksia. Koodi voisi tahattomasti ummistaa hieman sivullisella kysymyksellä.

Vaihtoehto 2 (mukaan lukien tietue) ei ole jatkuvasti ajateltavissa kyselyn käyttämän taulukon ja osioiden perusteella. WordPress-sovelluskehityskeskuksen taulukoiden vuoksi olisi syytä korostaa muita tietueiden vaikutuksia:

  • Odottaako keskustan virkistysrutiini lisäluetteloita?
  • Hidastaako tiedoston lisääminen erilaisia ​​kyselyjä, kuten INSERT ja UPDATE?

Vaihtoehto 3 (tulosten varaaminen kodittomien avulla) on merkityksetön – käyttäjän ei tarvitse muuttaa ensimmäistä kyselyä eikä tietokannan rakennetta tarvitse muuttaa.

Yleensä ihmiset valitsevat vaihtoehdon 3. Hän voi tietyssä tapauksessa valita toisen vaihtoehdon korjaamaansa kysymykseen tai tiettyyn sivustoon, jossa on SQL-ongelmia. Useimpiin toteutusongelmiin ei todellakaan ole olemassa yhtä ainoaa toimenpidettä, joka sopisi kaikille, joten saa olla eri mieltä toisen päätöksestä – tai yritä jokaista kolmesta ilman hetkenkään viivytystä!

Pysytään ajan tasalla

Se on hahmotellut täällä todellisen ongelman. CSS-Tricksin mukautetut kentät -laatikko todellakin loukkasi joitakin erittäin maltillisia tietokantakyselyitä. Se on myös hahmotellut erilaisia ​​tapoja kohti mahdollisia järjestelyjä.

Uusien ideoiden keksiminen

On olemassa erilaisia ​​menetelmiä, joiden avulla voit yrittää ja nopeuttaa kysymyksen suorittamista ja jotka sisältävät enemmän työtä kuin vain kyselyn säätämistä tai luettelon lisäämistä. Yksi kysymyksen hitaimmista osista on työ, joka tehdään taulukoiden yhdistämiseksi asiakastunnuksesta tuotetunnukseksi, ja tämä on tehtävä jokaiselle asiakkaalle.

Tiedot voitaisiin denormalisoida tekemällä taulukko, joka tallentaa lupatiedot kaikkien lisenssien asiakastunnuksen ja tuotetunnuksen ohella, ja yksinkertaisesti tiedustelemalla niitä tietyn asiakkaan osalta. Pitäisi muokata taulukkoa käyttämällä MySQL-liipaisimia kohdassa INSERT/UPDATE/DELETE lisenssitaulukkoon (tai muihin, jotka luottavat siihen, miten tiedot voivat muuttua), mutta tämä parantaisi merkittävästi kyseisten tietojen kyseenalaistamista.

Siten, jos useat liitokset hillitsevät kysymystä MySQL:ssä, voi olla nopeampaa jakaa kysely vähintään kahteen artikulaatioon ja suorittaa ne itsenäisesti PHP:ssä ja sen jälkeen kerätä ja kanavoida tulokset koodissa.

: instantshift.com

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja