{"id":248087,"date":"2024-02-03T16:27:00","date_gmt":"2024-02-03T13:27:00","guid":{"rendered":"https:\/\/inform.click\/kasulikud-nipid-aeglaste-wordpressi-andmebaasiparingute-leidmiseks-ja-parandamiseks\/"},"modified":"2024-02-03T16:27:00","modified_gmt":"2024-02-03T13:27:00","slug":"kasulikud-nipid-aeglaste-wordpressi-andmebaasiparingute-leidmiseks-ja-parandamiseks","status":"publish","type":"post","link":"https:\/\/inform.click\/et\/kasulikud-nipid-aeglaste-wordpressi-andmebaasiparingute-leidmiseks-ja-parandamiseks\/","title":{"rendered":"Kasulikud nipid aeglaste WordPressi andmebaasip\u00e4ringute leidmiseks ja parandamiseks"},"content":{"rendered":"<p>\n  M\u00f5\u00f5dukad SQL-p\u00e4ringud v\u00f5ivad WordPressi rakenduste arendussaidi t\u00e4itmist h\u00e4irida. Aeg-ajalt on m\u00f5\u00f5dukad p\u00e4ringud ebaadekvaatselt struktureeritud SQL-i j\u00e4relm\u00f5ju, mida poleks kunagi tohtinud nii teha.\n<\/p>\n<p>\n  Veelgi enam, m\u00f5nel juhul olid m\u00f5\u00f5dukad p\u00e4ringud tegelikkuses teatud ajahetkel kiired k\u00fcsimused \u2013 aga saidi k\u00fcpsemaks muutudes muutus p\u00e4ring aina aeglasemaks, ilma et oleks v\u00f5imalik laienevast andmebaasist kursis olla.\n<\/p>\n<p>\n  Vaatamata sellele, kuidas SQL sai m\u00f5\u00f5dukaks, tuleks WordPressi rakenduste arendamisel uurida m\u00f5nda l\u00e4henemisviisi probleemide avastamiseks ja lahendamiseks. Siin-seal v\u00f5ib vaja minna teatud veebirakendusi ning kohandatud t\u00e4iustamiseks ei pruugi olla piisavalt energiat, sobivust v\u00f5i kuluplaani. Ilma ettevalmistuseta loomine v\u00f5ib olla vastus m\u00f5nele probleemile, kuid see v\u00f5ib v\u00f5tta kauem aega kui praegusest koodibaasist alustamine. WordPress oli algselt \u00fcles ehitatud ajaveebipidamise etapina ja see on selle jaoks j\u00e4tkuvalt silmapaistev. Olgu kuidas on, see on arenenud t\u00e4iesti arenenud sisuhalduss\u00fcsteemiks (CMS) ja m\u00f5nel eesm\u00e4rgil v\u00f5ib isegi luua tugeva veebirakenduse \u2013 kiiresti ja oluliselt v\u00e4iksema kuluplaaniga kui kohandatud t\u00e4iustamine. Kuigi WordPress pakub sisseehitatud arendusrakendusi, Seda saab kasutada veebirakenduste jaoks, et muuta see eriti kasulikuks. Omaseid lehe- ja postitusstruktuure saab kasutada paljude asjade jaoks, kuid juhuks, kui on vaja kohandatud teavet ja v\u00e4lju lisada, otsida v\u00f5i k\u00fcsitleda, kontrollida ja n\u00e4idata, tuleb teha lisat\u00f6\u00f6d.\n<\/p>\n<h5>\n  Aeglaste p\u00e4ringute leidmine<br \/>\n<\/h5>\n<p>\n  M\u00f5\u00f5dukate k\u00fcsimuste p\u00e4ritolu leidmine h\u00f5lmab kahte etappi:\n<\/p>\n<ol>\n<li>Uurige v\u00e4lja, millised k\u00fcsimused on tegelikult m\u00f5\u00f5dukad.\n  <\/li>\n<li>Neid k\u00e4itava programmi tuvastamine.\n  <\/li>\n<\/ol>\n<p>\n  Tuleks uurida kahte moodulit ja \u00fchte SaaS-i, mis v\u00f5imaldavad neil m\u00f5\u00f5dukaid p\u00e4ringuid avastada.\n<\/p>\n<h5>\n  P\u00e4ringu monitor<br \/>\n<\/h5>\n<p>\n  Praegu t\u00f6\u00f6tava lehe kohta teabe saamiseks saab seda moodulit kasutada. Vaatamata tervele andmekogumile WordPressi sisetegevuste kohta, annab see punkt-punkti jaotuse:\n<\/p>\n<ul>\n<li>Kui palju k\u00fcsimusi selle n\u00f5udmise kohta tekkis?\n  <\/li>\n<li>Milline p\u00e4ring lehel v\u00f5ttis maksimaalselt aega?\n  <\/li>\n<li>Millised v\u00f5imsused investeerisid SQL-k\u00fcsimustesse k\u00f5ige rohkem energiat?\n  <\/li>\n<li>Olenemata sellest, kas need p\u00e4ringud p\u00e4rinevad moodulitest, \u00f5ppeainetest v\u00f5i WordPressi keskusest\n  <\/li>\n<\/ul>\n<p>\n  P\u00e4ringuekraan tuvastab isegi m\u00f5\u00f5dukad k\u00fcsimused, mille sisu on h\u00e4iriv punane, mis muudab probleemi SQL-i valimise v\u00e4ga lihtsaks.\n<\/p>\n<h5>\n  Silumisriba<br \/>\n<\/h5>\n<p>\n  Teine fenomenaalne instrument h\u00e4rmas m\u00f5\u00f5duka SQL-i leidmiseks on vana, usaldusv\u00e4\u00e4rne silumisriba moodul. Silumisriba pakub andmeid WordPressi sisemise toimimise kohta, kui leht on laaditud selliste asjadega nagu:\n<\/p>\n<ol>\n<li>WP_Query parameetrid\n  <\/li>\n<li>Taotle andmeid (arvestab uuendamise reeglite koosk\u00f5lastamist)\n  <\/li>\n<li>SQL-p\u00e4ringud, mille toodab k\u00e4esolev leht\n  <\/li>\n<\/ol>\n<p>\n  SQL-i j\u00e4lgimise lubamiseks silumisribal peaks kasutaja m\u00e4rkima, et lubada SAVEQUERIES kuskil saidil \u2013 t\u00f5en\u00e4oliselt failis wp-config.php\n<\/p>\n<p>\n  Hoiatus: SAVEQUERIES m\u00f5jutab t\u00e4itmist saidil ja arvatavasti ei tohiks seda genereerimisserveris kasutada. Seda saab aga kasutada edasij\u00f5udnute masinas.\n<\/p>\n<p>\n  M\u00f5\u00f5duka SQL-i leidmine ei ole silumisriba abil eriti lihtne. N\u00e4iteks ei paku see kasutajale sorteeritavaid tabeleid ega paku m\u00f5\u00f5dukaid p\u00e4ringuid. Silumisriba pakub suutlikkust j\u00e4lgida, mis suunab kasutaja t\u00e4pselt k\u00fcsimuse p\u00e4ritolu suunas.\n<\/p>\n<p>\n  See on laaditud dokumentide ja t\u00e4idetava p\u00e4ringu tulemuseks olevate mahtude kokkuv\u00f5te. Enamasti on inimene huvitatud absoluutsest j\u00e4tkamise osast. see on koht, kus m\u00f5\u00f5dukas k\u00fcsimus t\u00e4ideti ja kust tuleks jahti alustada. Iga selle k\u00fcsimuse esitava v\u00f5imsuse seadistamise mugav asi on see, et see v\u00f5ib anda \u00fclevaate sellest, miks SQL igal juhul k\u00e4ivitati.\n<\/p>\n<h5>\n  Uus reliikvia<br \/>\n<\/h5>\n<p>\n  NewRelic on administratsioon, mis m\u00f5\u00f5dab ja kontrollib veebirakenduste, sealhulgas WordPressi rakenduste arendamise t\u00e4itmist. Administratsioon annab saidi t\u00e4itmise kohta tonni andmeid. See on k\u00f5ike muud kui raske kaotada igasugune suunataju teabes, mille NewRelic annab kasutajale iga minuti jooksul SQL-p\u00e4ringute jaoks \u00fcksikasju.\n<\/p>\n<p>\n  NewRelici ja moodulite vahel, millele me varem viitasime, on kaks t\u00e4helepanuv\u00e4\u00e4rset kontrasti:\n<\/p>\n<ol>\n<li>NewRelic annab palju parema \u00fclevaate PHP t\u00e4itmisest kuni iga funktsiooni jaoks kulutatud aja t\u00e4pse arvutamiseni\n  <\/li>\n<li>NewRelic j\u00e4lgib iga saidi n\u00f5udlust, et saaksite sellele hiljem viidata m\u00f5\u00f5duka SQL-i avastamiseks. Moodulid annavad talle lihtsalt praeguse lehe.\n  <\/li>\n<\/ol>\n<p>\n  On oluline, et NewRelicil oleks tasuta korraldustase, mis annab \u00fcldisi andmeid saidi t\u00e4itmise kohta, kuid v\u00e4ljam\u00f5eldud koefitsientide ja otste jaoks tuleb liikuda tasulise korralduse poole, et kontrollida \u00fcksikuid n\u00f5udmisi ja leida m\u00f5\u00f5dukaid p\u00e4ringuid.\n<\/p>\n<h5>\n  Aeglase p\u00e4ringu m\u00f5istmine EXPLAIN abil<br \/>\n<\/h5>\n<p>\n  Kuni selle hetkeni on seadmed m\u00f5\u00f5dukate k\u00fcsimuste leidmiseks turvatud. Praegu peaks teadma, miks need p\u00e4ringud asju takistavad.\n<\/p>\n<p>\n  MySQL EXPLAIN m\u00e4rgus\u00f5na v\u00f5ib v\u00f5imaldada toimuvat selgitada. EXPLAIN lisamine p\u00e4ringu algusesse n\u00e4itab, kuidas MySQL k\u00fcsimust t\u00e4idab. Keeruliste p\u00e4ringute puhul aitab EXPLAIN eristada SQL-i m\u00f5\u00f5dukaid fookusi, n\u00e4iteks m\u00f5\u00f5dukaid alamp\u00e4ringuid v\u00f5i raiskavaid tegevusi.\n<\/p>\n<h5>\n  Aeglaste p\u00e4ringute parandamine<br \/>\n<\/h5>\n<p>\n  Kuna m\u00f5istetakse, et p\u00e4ringud on m\u00f5\u00f5dukad ja EXPLAIN on andnud kasutajale teada, miks see nii on, tuleks nende uimaste probleemide lahendamiseks m\u00f5elda paarile valikule.\n<\/p>\n<p>\n  <strong>1 v\u00f5imalus: k\u00fcsimuse keerutamine<\/strong>\n<\/p>\n<p>\n  V\u00f5ib tekkida k\u00fcsimus, mis muudab postituse redigeerimise ekraani v\u00e4ga aeglaseks. P\u00e4ring oli osa kohandatud v\u00e4ljade metakastist.\n<\/p>\n<p>\n  SQL-i kindel osa on meta_keys loendi toomine tabelist ks29so_postmeta, mis suure t\u00f5en\u00e4osusega ei alga alakriipsuga. GROUP BY selgitus t\u00e4hendab, et iga tulemus on eriline.\n<\/p>\n<p>\n  Kui k\u00e4ivitate seda p\u00e4ringut mitu korda, siis siin on aeg, mil m\u00e4\u00e4ral see v\u00f5ib aega v\u00f5tta.\n<\/p>\n<p>\n  1,7145 sek\n<\/p>\n<p>\n  1,7911 sek\n<\/p>\n<p>\n  1,8076 sek\n<\/p>\n<p>\n  1,7707 sek\n<\/p>\n<p>\n  1,8456 sek\n<\/p>\n<p>\n  V\u00f5ib v\u00e4lja t\u00f6\u00f6tada p\u00e4ringu, mille tulemuseks on sarnased v\u00e4ljundid. See tuleb valida kui ainulaadne meta_keys. Erakordne on samav\u00e4\u00e4rne s\u00f5na konkreetse jaoks, mis juhtub olema SQL-i seletus!\n<\/p>\n<p>\n  <strong>2 valik: indeksi lisamine<\/strong>\n<\/p>\n<p>\n  Sel ajal, kui kasutaja esitab m\u00e4\u00e4ratud MySQL-i tabelis SQL-k\u00fcsimust, peab ta uurima kogu tabelit, et m\u00f5ista, millised read on konkreetse p\u00e4ringu jaoks olulised. Kui tabel muutub suureks, v\u00f5tab see kontrollimine \u00fcsna kaua aega.\n<\/p>\n<p>\n  See on koht, kus MySQL-kirjed tulevad sisse. Loendid v\u00f5tavad teabe tabelisse ja korraldavad selle nii, et teabe leidmine on palju v\u00e4hem n\u00f5udlik. Teabe konkreetsel viisil sorteerimisel aitavad failid v\u00e4hendada MySQL-i filtreerimise m\u00f5\u00f5det iga p\u00e4ringu puhul.\n<\/p>\n<p>\n  Faile saab lisada \u00fcksikutele segmentidele v\u00f5i erinevatele jaotistele.\n<\/p>\n<p>\n  Faili meta_key puhul sarnaneb esimene SQL-i k\u00fcsimuste aeg m\u00f5nev\u00f5rra j\u00e4rgmiselt:\n<\/p>\n<p>\n  0,0041 sek\n<\/p>\n<p>\n  0,0023 sek\n<\/p>\n<p>\n  0,0030 sek\n<\/p>\n<p>\n  0,0025 sek\n<\/p>\n<p>\n  0,0019 sek\n<\/p>\n<p>\n  See on \u00e4\u00e4rmiselt tark.\n<\/p>\n<p>\n  Failide hoiatuse v\u00e4ljendus: iga kord, kui INSERT teeb veeru v\u00f5i kasutatakse UPDATE, m\u00e4\u00e4ratakse loend uuesti, mis v\u00f5ib olla kulukas tegevus. Kirjed muudavad tabelist lugemise kiiremaks, kuid sinna kirjutamine on aeglasem. Kuigi \u00f5igesti paigutatud registriloend v\u00f5ib v\u00e4ga h\u00e4sti toimida, ei tohiks sellest kinnisideeks j\u00e4\u00e4da ilma loendi \u00fcldist m\u00f5ju andmebaasile kontrollimata.\n<\/p>\n<p>\n  <strong>Valik 3: salvestage p\u00e4ringutulemused vahem\u00e4llu<\/strong>\n<\/p>\n<p>\n  Kui saadakse aru, et on m\u00f5\u00f5dukas k\u00fcsimus. Selle asemel, et k\u00fcsimust muuta, v\u00f5ib olla stsenaarium, kus see lihtsalt k\u00f5rvaldab p\u00e4ringu j\u00e4relm\u00f5jud. Nii saaks piirata p\u00e4ringu teostamise sagedust ja ta saaks sagedamini &#8220;tasuta p\u00e4\u00e4sme&#8221;.\n<\/p>\n<p>\n  WordPress Transients API on \u00fcks p\u00e4ringute reserveerimise viise. Siirdeid kasutatakse kulukate \u00fclesannete tagaj\u00e4rgede k\u00f5rvaldamiseks, n\u00e4iteks\n<\/p>\n<ul>\n<li>P\u00e4ringud v\u00e4listele saitidele (nt jooksvate Facebooki postituste saamine)\n  <\/li>\n<li>Aeglased k\u00e4sitsemise t\u00fckid (n\u00e4iteks tavap\u00e4rase artikulatsiooniga tohutute n\u00f6\u00f6ride otsimine)\n  <\/li>\n<li>Aeglased andmebaasip\u00e4ringud!\n  <\/li>\n<\/ul>\n<h5>\n  L\u00e4henemisviisi valimine<br \/>\n<\/h5>\n<p>\n  V\u00e4lja on pakutud mitmeid alternatiive ja selle m\u00f5\u00f5duka k\u00fcsitluse m\u00f5istmiseks on t\u00f5en\u00e4oliselt seitseteist erinevat l\u00e4henemisviisi. Millist l\u00e4henemist tuleks kasutada?\n<\/p>\n<p>\n  Valik 1 (k\u00fcsimuse muutmine) andis suurep\u00e4raseid tulemusi. Siiski tuleks arvestada v\u00f5imalusega, et muudetud p\u00e4ringul ei ole \u00fcldiselt sarnaseid tulemusi. Koodi v\u00f5iks tahtmatult m\u00f5ne k\u00f5rvalekalduva k\u00fcsimusega vahele t\u00f5mmata.\n<\/p>\n<p>\n  Alternatiiv 2 (kaasa arvatud kirje) ei ole pidevalt m\u00f5eldav, s\u00f5ltudes p\u00e4ringus kasutatud tabelist ja jaotistest. WordPressi rakenduste arenduskeskuse tabelite t\u00f5ttu tuleks r\u00f5hutada kirjete muid m\u00f5jusid:\n<\/p>\n<ul>\n<li>Kas keskust v\u00e4rskendav rutiin ootab lisanimekirju?\n  <\/li>\n<li>Kas faili kaasamine v\u00e4hendab erinevaid p\u00e4ringuid, sarnaselt INSERT ja UPDATE?\n  <\/li>\n<\/ul>\n<p>\n  Alternatiiv 3 (tulemuste reserveerimine kodutute abil) on ebaoluline \u2013 kasutaja ei pea esimest p\u00e4ringut muutma ja andmebaasi struktuuri pole vaja kohandada.\n<\/p>\n<p>\n  Tavaliselt valivad inimesed 3. variandi. Konkreetsel juhul v\u00f5ib ta valida m\u00f5ne muu alternatiivi, tuginedes lahendatavale k\u00fcsimusele v\u00f5i konkreetsele saidile, millel on SQL-probleemid. Kindlasti ei ole enamiku t\u00e4itmisprobleemide puhul \u00fchest meedet, mis sobib k\u00f5igile, nii et \u00fchel on lubatud teiste otsustest erineda \u2013 v\u00f5i proovige hetkegi viivitamata k\u00f5iki kolmest!\n<\/p>\n<h5>\n  Ajakohasena p\u00fcsimine<br \/>\n<\/h5>\n<p>\n  See on siin visandanud t\u00f5elise probleemi. CSS-Tricksi kohandatud v\u00e4ljade kast oli t\u00f5esti m\u00f5ne \u00e4\u00e4rmiselt m\u00f5\u00f5duka andmebaasip\u00e4ringu rikkuja. Samuti on see visandanud erinevaid v\u00f5imalusi v\u00f5imalike kokkulepete saavutamiseks.\n<\/p>\n<p>\n  <strong>Uhiuute ideede v\u00e4ljam\u00f5tlemine<\/strong>\n<\/p>\n<p>\n  K\u00fcsimuse t\u00e4itmist saab proovida ja kiirendada mitmel erineval viisil, mis h\u00f5lmab rohkem t\u00f6\u00f6d kui lihtsalt p\u00e4ringu kohandamine v\u00f5i loendi lisamine. K\u00fcsimuse \u00fcks aeglasemaid osi on t\u00f6\u00f6, mis tehakse tabelite \u00fchendamiseks, et minna kliendi ID-st \u00fcksuse ID-ni, ja seda tuleb teha iga kliendi jaoks.\n<\/p>\n<p>\n  Teabe saab denormaliseerida, koostades tabeli, mis salvestab loa teabe koos k\u00f5igi litsentside kliendi ID ja \u00fcksuse ID-ga, ning lihtsalt p\u00e4rida selle kohta konkreetse kliendi jaoks. Litsentsitabelisse tuleks muuta tabelit, kasutades MySQL-i k\u00e4ivitajaid INSERT\/UPDATE\/DELETE (v\u00f5i teisi, mis s\u00f5ltuvad sellest, kuidas teave v\u00f5ib muutuda), kuid see parandaks oluliselt selle teabe k\u00fcsitlemist.\n<\/p>\n<p>\n  Seega, kui erinevad \u00fchendused v\u00e4hendavad k\u00fcsimust MySQL-is, v\u00f5ib olla kiirem jagada p\u00e4ring v\u00e4hemalt kaheks liigenduseks ja k\u00e4ivitada need PHP-s iseseisvalt ning seej\u00e4rel koguda ja suunata tulemused koodi.\n<\/p>\n<\/p>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\n  : instantshift.com\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f5\u00f5dukad SQL-p\u00e4ringud v\u00f5ivad WordPressi rakenduste arendussaidi t\u00e4itmist h\u00e4irida. Aeg-ajalt on m\u00f5\u00f5dukad p\u00e4ringud ebaadekvaatselt struktureeritud SQL-i j\u00e4relm\u00f5ju, mida poleks kunagi tohtinud nii teha. Veelgi enam, m\u00f5nel juhul olid m\u00f5\u00f5dukad p\u00e4ringud tegelikkuses teatud ajahetkel kiired k\u00fcsimused \u2013 aga saidi k\u00fcpsemaks muutudes muutus p\u00e4ring aina aeglasemaks, ilma et oleks v\u00f5imalik laienevast andmebaasist kursis olla. Vaatamata sellele, kuidas SQL sai m\u00f5\u00f5dukaks, tuleks WordPressi rakenduste arendamisel uurida m\u00f5nda l\u00e4henemisviisi probleemide avastamiseks ja lahendamiseks. Siin-seal v\u00f5ib vaja minna teatud veebi\u2026<\/p>\n","protected":false},"author":1,"featured_media":204810,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[221,143,195,52],"tags":[],"class_list":["post-248087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-opikud","category-veebi-napunaited-ja-nipid","category-veebikujundus","category-web-ja-wordpress"],"_links":{"self":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts\/248087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/comments?post=248087"}],"version-history":[{"count":0,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/posts\/248087\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/media\/204810"}],"wp:attachment":[{"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/media?parent=248087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/categories?post=248087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.click\/et\/wp-json\/wp\/v2\/tags?post=248087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}