Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 15232|Vastaus: 3

[Lähde] MySQL-suorittimen 100 % korkea ratkaisu

[Kopioi linkki]
Julkaistu 11.10.2018 11.20.31 | | | |
Avaa palvelimen tehtävienhallinta ja huomaa, että prosessoriprosessi on aina ollut 99 %, ja näkymä on ollut mysql-prosessilla, joka on ollut korkea.


Processlist-komennon tulos näyttää, mitkä säikeet ovat käynnissä, ja voit tarkistaa tietokannan nykyisen suoritustilan.

1. Mene mysql/bin-hakemistoon ja syötä mysqladmin processlist;
2. Aloita mysql ja syötä näytä prosessilista.
Jos sinulla on SUPER-oikeus, näet kaikki ketjut, muuten näet vain tilisi ketjut.





Jokaisen sarakkeen merkitys ja tarkoitus

id: Tunniste
käyttäjä: näyttää nykyisen käyttäjän, jos se ei ole root-käyttäjä, tämä komento näyttää vain SQL-lauseet käyttöoikeuksiesi sisällä.
isäntä: näyttää, mistä IP-osoitteesta tämä väite tulee mistä portista
db: Näyttää tietokannan, johon prosessi on tällä hetkellä yhteydessä.
komento: Näyttää nykyisen yhteyden suorittamat komennot, yleensä lepotilaan, kyselyn ja yhdistämisen.
aika: Aika, joka tämä tila kestää, sekunneissa.
tila: Näyttää sql-lauseen tilan, joka käyttää nykyistä yhteyttä, mutta vain tietty tila lauseen suorituksessa, sql-lause, on haettu, esimerkiksi se saattaa joutua käymään läpi kopiointitaulun tmp-tauluun, Lajittelutulokseen, Tietojen lähettämiseen jne
info: Näyttää tämän SQL-lauseen, koska sen pituus on rajallinen, joten pitkä SQL-lause ei näytetä kokonaan, mutta se on tärkeä perusta ongelmalauseen arviointiin.


On havaittu, että on olemassa kaksi SQL-kyselylausetta, jotka vievät eniten aikaa ja joita ei ole suoritettu yli 1000 sekuntiin, ja ne SQL-lauseet, jotka kopioimme info-kentästä, ovat yhteiskysely seuraavasti:

valitse cast(count(*) as SIGNED) col_0_0_ 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ missä baseinfoco1_. CompanyId=ratedpasse0_. CompanyId ja ordermatch2_. OrderId=ratedpasse0_. OrderId

Tapaamme näiden kahden kyselylauseen prosessin

Odotettuani 10 sekuntia, huomasin, että prosessori oli laskenut paljon, mutta se oli silti hyvin korkea, ja aion jatkaa syyn kysymistä!



Join joint query -lausetta varten lisää indeksi siihen liittyvään kenttään tai muokkaa ohjelman kyselykoodia.
Luo indeksi-SQL-lause

Loppu





Edellinen:C# kirjaudu WordPressiin
Seuraava:Muokkaa docker-konttien porttikartoitusmenetelmää
 Vuokraisäntä| Julkaistu 11.10.2018 13.03.02 |
Tärkein komento on tilasarakke, ja mysql:ssä luetellut tilat ovat pääasiassa seuraavat:

Tarkistuspöytä  
  Tarkistan datasheetin (tämä tapahtuu automaattisesti).  
  Sulkemispöydät  
  Taulukossa muokatut tiedot huuhtoutuvat levylle, ja käytetty taulukko suljetaan. Tämä on nopea toimenpide, jos ei, tarkista, onko levytila täynnä vai onko levy kuormitettu.  
  Yhdistä  
  Replikaatioslave-palvelin yhdistää ensisijaiseen palvelimeen.  
  Kopiointi tmp-taulukkoon levyllä  
  Koska väliaikainen tulosjoukko on suurempi kuin tmp_table_size, väliaikainen taulukko muunnetaan muistista levytallennukseen muistin säästämiseksi.  
  TMP-taulukon luominen  
  Väliaikaista taulukkoa luodaan tallentamaan osa kyselyn tuloksista.  
  Poistaminen päätaulukosta  
  Palvelin suorittaa monitaulun poiston ensimmäistä osaa ja on juuri poistanut ensimmäisen taulun.  
  Poistaminen viitetaulukoista  
  Palvelin suorittaa toisen osan monitaulupoistosta, eli tietueiden poistamista muista tauluista.  
  Huuhtelutaulukot  
  Teen FLUSH-TAULUJA, odotan että muut säikeet sulkevat datataulukon.  
  Tapettu  
  Jos tappopyyntö lähetetään säikeeseen, säie tarkistaa tappolipun ja hylkää seuraavan tappopyynnön. MySQL tarkistaa tappoliput jokaisessa pääsilmukassa, vaikka joissain tapauksissa säie voi kuolla lyhyeksi aikaa. Jos säie on lukittu toiseen säikeeseen, tappopyyntö astuu voimaan heti, kun lukitus vapautetaan.  
  Lukittu  
  Muut kyselyt ovat lukittuja.  
  Datan lähettäminen  
  SELECT-kyselyn tietuetta käsitellään samalla kun tulokset lähetetään asiakkaalle.  
  Ryhmälajittelu  
  Lajittelu RYHMÄ MUKAAN.  
  Järjestyksen lajittelu  
  Lajittelu tehdään TILAUKSEN MUKAAN.  
  Avauspöydät  
  Tämän prosessin tulisi olla nopea, ellei muita tekijöitä häiritse. Esimerkiksi datataulukkoa ei voi avata toisella säikeellä ennen kuin ALTER TABLE tai LOCK TABLE -lause on suoritettu. Yritän avata pöytää.  
  Kaksoiskappaleiden poistaminen  
  SELECT DISTINCT -kysely suoritetaan, mutta MySQL ei pysty optimoimaan edellisen vaiheen duplikaattitietueita. Siksi MySQL:n täytyy poistaa kaksoiskappaleet uudelleen ennen tulosten lähettämistä asiakkaalle.  
  Avaamispöytä uudelleen  
  Pöydälle saadaan lukko, mutta sitä on muutettava taulukon rakenteen muokattua. Olen jo vapauttanut lukon, suljettu datasheetin ja yritän avata datatablen uudelleen.  
  Korjaus lajittelemalla  
  Korjauskäsky on lajitella indeksin luomiseksi.  
  Korjaus avainvälimuistilla  
  Korjausohje on käyttää indeksivälimuistia luodakseen uusia indeksejä yksi kerrallaan. Se on hitaampaa kuin Korjaa lajittelemalla.  
  Päivitysten etsiminen riveistä  
  Kelvolliset asiakirjat tunnistetaan päivityksiä varten. Se on tehtävä ennen kuin PÄIVITYS muuttaa asiaankuuluvaa tietuetta.  
  Nukkuminen  
  Odotan, että asiakas lähettää uuden pyynnön.  
  Järjestelmälukko  
  Odotan ulkoista järjestelmälukkoa. Jos samanaikaisesti ei ole käynnissä mysqld-palvelimia, jotka pyytävät samaa taulukkoa, ulkoiset järjestelmälukot voidaan estää lisäämällä –skip-external-locking -parametri.  
  Lukon päivitys  
  INSERT DELAYED yrittää saada lukitustaulukon lisäämään uuden tietueen.  
  Päivitys  
  Etsin yhteensopivia tietoja ja muokkaan niitä.  
  Käyttäjälukko  
  odottaa GET_LOCK().  
  Pöytien odottaminen  
  Säie sai ilmoituksen, että datasheet-rakennetta oli muokattu ja se piti avata uudelleen uuden rakenteen saamiseksi. Sitten, jotta datataulu avautuu uudelleen, sinun täytyy odottaa, että kaikki muut säikeet sulkevat taulun. Tämä ilmoitus esiintyy seuraavissa tapauksissa: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE tai OPTIMIZE TABLE.  
  Odotetaan handler-insertiä  
  INSERT DELAYED on käsitellyt kaikki odottavat insertit ja odottaa uutta pyyntöä.  
  Useimmat tilat vastaavat nopeita operaatioita, kunhan säie pysyy samassa tilassa muutaman sekunnin, voi olla ongelma, joka täytyy tarkistaa.
 Vuokraisäntä| Julkaistu 1.3.2019 10.26.49 |
 Vuokraisäntä| Julkaistu 1.3.2019 10.34.13 |


Datan kyselyyn menee 10 sekuntia.
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com