Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 15232|Válasz: 3

[Forrás] MySQL CPU 100% magas megoldás

[Linket másol]
Közzétéve 2018. 10. 11. 11:20:31 | | | |
Megnyitom a szerver feladatkezelőt, és azt látod, hogy a CPU folyamata mindig 99% volt, és a nézetet a mysql folyamat foglalta el, ami eddig magas volt.


A processlist parancs kimenete mutatja, mely szálak futnak, és ellenőrizheted az adatbázis aktuális futó állapotát.

1. Menjen a mysql/bin könyvtárba, és írd be a mysqladmin processlist-et;
2. Indítsd el a mysql-t, és lépj be a show processlist-be.
Ha SUPER engedélyed van, az összes szálat látod, különben csak a fiókod szálait látod.





Az egyes oszlopok jelentése és célja

azonosító: Egy azonosító
user: megjeleníti a jelenlegi felhasználót, ha nem root, ez a parancs csak az engedélyeiden belüli SQL utasításokat jeleníti meg.
host: megmutatja, melyik IP-ről származik ez az állítás, melyik portról származik
db: Megjeleníti azt az adatbázist, amelyhez a folyamat jelenleg kapcsolódik.
parancs: Megjeleníti a jelenlegi kapcsolat által végrehajtott parancsokat, általában alvó, lekérdezés és csatlakozás.
idő: Az az idő, hogy ez az állapot tart, másodpercekben.
állapot: Megjeleníti annak a SQL utasításnak az állapotát, amely a jelenlegi kapcsolatot használja, de csak egy bizonyos állapotot kértek le a végrehajtásban, például át kell mennie a tmp táblába történő másoláson, Rendezett eredményen, Adatküldésen stb
info: Megjeleníti ezt az SQL utasítást, mert a hossza korlátozott, így a hosszú SQL utasítás nem jelenik meg teljesen, de fontos alapot jelent a problémakimondás megítéléséhez.


Megállapították, hogy két SQL lekérdezési utasítás tart a leghosszabb időt, és nem hajtottak végre több mint 1000 másodperce, és az információmezőből másolt SQL utasítások közös lekérdezések, az alábbiak szerint:

a cast(count(*) as SIGNED) col_0_0_ a 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ ahol baseinfoco1_. CompanyId=ratedpasse0_. CompanyId és ordermatch2_. OrderId=ratedpasse0_. OrderId

Megöljük ezeknek a két lekérdezési állításnak a folyamatát

10 másodperc várakozás után azt tapasztaltam, hogy a CPU jelentősen csökkent, de még mindig nagyon magas volt, és továbbra is érdeklődni fogok az okért!



A join közös lekérdezési utasításhoz adj hozzá egy indexet a hozzá tartozó mezőhöz, vagy módosítsd a program lekérdezési kódját.
Hozz létre egy index SQL utasítást

Vége





Előző:C# bejelentkezés a Wordpressbe
Következő:Módosítsd a port térképezés módszerét docker konténerek esetén
 Háziúr| Közzétéve 2018. 10. 11. 13:03:02 |
A legkritikusabb parancs az állapotoszlop, és a mysql-ben felsorolt állapotok főként a következők:

Ellenőrzőasztal  
  Az adatlap ellenőrzése (ez automatikus).  
  Záró asztalok  
  A táblázatban módosított adatokat a lemezre öblítik, és a felhasznált táblát lezárják. Ez egy gyors művelet, ha nem, ellenőrizd, hogy a lemezhely tele van-e vagy terhelés alatt van-e a lemez.  
  Kapcsolódj ki  
  A replikációs szolgaszerver csatlakozik az elsődleges szerverhez.  
  Másolás a tmp táblára a lemezen  
  Mivel az ideiglenes eredményhalmaz nagyobb, mint tmp_table_size, az ideiglenes táblát a memóriából lemeztárrá konvertálják a memória megtakarítása érdekében.  
  TMP tábla létrehozása  
  Egy ideiglenes tábla készül, amely néhány lekérdezési eredményt tárol.  
  Törlés a fő tábláról  
  A szerver a többtáblás törlés első részét végzi, és éppen törölte az első táblát.  
  Hivatkozási táblázatokból való törlés  
  A szerver a többtáblás törlés második részét végzi, amely más táblákból származó rekordok törlését jelenti.  
  Öbönzésasztalok  
  A FLUSH TABLE-okat csinálom, várva, hogy más szálak lezárják az adattáblát.  
  Megölték  
  Ha egy megölési kérést küldenek egy szálba, a szál megnézi a kill flag-et, és elhagyja a következő megölési kérést. A MySQL minden fő hurokban ellenőrzi a kill flagokat, bár bizonyos esetekben a szál rövid időre meghalhat. Ha a szálat egy másik szál zárja, a kill request azonnal érvényes a zárolás feloldásával.  
  Zárva  
  Más kérdések zárták le.  
  Adatküldés  
  A SELECT lekérdezés rekordját feldolgozják, miközben az eredményeket elküldik az ügyfélnek.  
  Csoportos rendezés  
  Csoportos rendezés a CSOPORTOS OSZTÁLYOZÁSHOZ.  
  Sorrend szerinti rendezés  
  A RENDEZÉS SZERINTI RENDEZÉSRE kerül.  
  Nyitóasztalok  
  Ez a folyamat gyorsnak kellene lennie, hacsak más tényezők nem zavarják meg. Például egy adattáblát nem lehet megnyitni egy másik szál által, amíg az ALTER TABLE vagy LOCK TABLE utasítást nem futtatjuk. Próbálok kinyitni az asztalt.  
  Másolatok eltávolítása  
  A SELECT DISTINCT lekérdezés fut el, de a MySQL nem tudja optimalizálni az előző szakaszban lévő duplikált rekordokat. Ezért a MySQL-nek ismét el kell távolítania a duplikált rekordokat, mielőtt az eredményeket elküldené az ügyfélnek.  
  Újranyitási asztal  
  Egy táblázaton rögzítőt kapunk, de azt a tábla szerkezetének módosítása után módosítani kell. Már kiengedtem a zárolást, bezártam az adatlapot, és próbálom újra megnyitni az adattáblát.  
  Javítás rendezéssel  
  A fix utasítás az indexet rendezni.  
  Javítás kulcscache-rel  
  A fix direktíva az index cache-t használja új indexek létrehozására egyenként. Ez lassabb lesz, mint a rendezéssel történő javítás.  
  Sorok keresése frissítésért  
  A jogosult nyilvántartásokat azonosítják frissítések céljából. Ezt még azelőtt kell megtenni, hogy a FRISSÍTÉS módosítja a releváns rekordot.  
  Alvás  
  Várom, hogy az ügyfél új kérést küldjön.  
  Rendszerzár  
  Várok, hogy külső rendszerzárat kapjanak. Ha nincs egyszerre futó mysqld szerver, amely ugyanazt a táblát kéri, a külső rendszerzárolásokat tilthatják a –skip-external-locking paraméter hozzáadásával.  
  Zár fejlesztése  
  Az INSERT DELAYED azt jelenti, hogy egy lock táblát próbál új rekordot behelyezni.  
  Frissítés  
  Keresni a megfelelő feljegyzéseket és módosítani őket.  
  Felhasználói zár  
  várja a GET_LOCK().  
  Asztalvárás  
  A szálat értesítették, hogy az adatlap szerkezete módosítódott, és újra ki kell nyitni az új struktúra eléréséhez. Ezután, hogy újra megnyithasd az adattáblát, várnod kell, amíg a többi szál bezárja a táblát. Ez az értesítés a következő esetekben fordul elő: FLUSH TABLES tbl_name, ALTER TABLE, RENAME TABLE, REPAIR TABLE, ANALYZE TABLE vagy OPTIMIZE TABLE.  
  Várva a kezelő behelyezésre  
  Az INSERT DELAYED feldolgozta az összes függőben lévő beszúrást, és új kérésre vár.  
  A legtöbb állapot gyors műveletnek felel meg, amíg egy szál néhány másodpercig ugyanabban az állapotban marad, akkor előfordulhat egy probléma, amit ellenőrizni kell.
 Háziúr| Közzétéve 2019. 03. 01. 10:26:49 |
 Háziúr| Közzétéve 2019. 03. 01. 10:34:13 |


Egy adat lekérdezése 10 másodpercet vesz igénybe.
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com