Névjegyzék

Hogyan kapcsolja ki a lassú kérések naplóját. Naplózás a MySQL-ben. Lekérdezési profilosítási adatok elemzése

Profiling lekérdezések a MySQL-ben Az alkalmazás teljesítményének értékelésére szolgál. A közepes és nagy alkalmazások fejlesztésekor több száz kéréssel kell foglalkozni a kóddal, amelyet minden másodpercenként végrehajtanak. A lekérdezés profilozási technikát nem lehet nagyon nehéz megtalálni, mert az alkalmazás sebessége szenved.

Mi a lassú lekérdezések a MySQL-ben?

A MySQL-ben a lassú kérések nagysága a lassú és potenciálisan problémás kérések megjegyzése. A MySQL alapértelmezés szerint támogatja az ilyen funkciókat, de le van tiltva. Bizonyos kiszolgálóváltozók konfigurálása, megadhatjuk, hogy mely kéréseket érdekel. Leggyakrabban szükségünk van olyan lekérdezésekre, amelyek bizonyos ideig igénybe vehetik a végrehajtásukat vagy az indexek helytelen kezelését.

Változó profilozás beállítása

Alapváltozók a kérés naplóinak beállításához:

Slow_query_log g slow_query_log_file g long_query_time g / s log_queries_not_using_indexes g min_examined_row_limit g / s

Megjegyzés: G - Globális változók, S - Rendszerváltozók

  • slow_Query_Log - Boolean Value, beleértve a naplót
  • slow_query_log_file abszolút út a naplófájlhoz. A katalógus tulajdonosanak felhasználónak kell lennie mysqld.És a könyvtárnak megfelelő engedélyekkel kell rendelkeznie az olvasáshoz és az íráshoz. Leggyakrabban a MySQL démon a felhasználó nevében fut mysql.

Ellenőrzés, futtassa a következő parancsokat:

PS -F | Grep bin / mysqld | Vágott "" -f1

A parancs kimenete megadja az aktuális felhasználó és a mysqld felhasználó nevét. Példa a könyvtár konfigurálására / VAR / LOG / MYSQL:

CD / var / log sudo mkdir mysql sudo chmod 755 mysql sudo chown mysql: mysql mysql

  • long_Query_Time - idő másodpercben, hogy ellenőrizze a lekérdezés időtartamát. Például 5-vel, minden kérés több mint 5 másodpercig rögzül a naplóban.
  • log_queries_not_using_indexes - logikai érték, tartalmazza a mentés kéri, hogy ne használja indexek. Az ilyen kérések nagyon fontosak az elemzés során.
  • mIN_EXAMINING_ROW_LIMIT - Az elemzéshez az adatsorok számának minimális értékét jelzi. Az 1000 értéket figyelmen kívül hagyja azokat az igényeket, amelyek kevesebb, mint 1000 értéket kapnak.

Beállíthatja ezeket a változókat a MySQL konfigurációs fájlban, dinamikusan a MySQL GUI vagy a MySQL parancssorban. Ha a változók szerepelnek a konfigurációs fájlban, a kiszolgáló telepíti őket a következő indításkor. Általában ez a fájl az / etc, / usr, /etc/my.cy.cy.cy.cnf vagy /etc/mysql/my.cnf. Itt van a konfigurációs fájlkeresési parancsok (néha bővítenie kell a más root könyvtárak keresését):

Talál / etc -name my.cnf keresés / usr -name my.cnf

Ha fájlt talál, adja hozzá a kívánt változókat a szakaszban:

; ... Lassú Query-log \u003d 1 lassú-query-log-file \u003d /var/log/mysql/localhost-slow.log Long_Query_time \u003d 1 log-lekérdezéseket-nem-using-indexek; Nincs érték

A változások csak a következő MySQL elindításnál kerülnek megrendezésre, ha dinamikus paraméterekre van szükség, használjon más változó telepítési módszereket:

Mysql\u003e Set Global Slow_Query_log \u003d "Be"; MySQL\u003e Set globális slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log"; MySQL\u003e Set Global log_queries_not_using_indexes \u003d "Be"; MySQL\u003e Set Session Long_Query_Time \u003d 1; MySQL\u003e Set Session MIN_EXAMININED_ROW_LIMIT \u003d 100;

Ellenőrizze, hogy a változók értékei a következők lehetnek:

MySQL\u003e A globális változók megjelenítése, mint a "Slow_Query_log"; MySQL\u003e A munkamenetváltozók megjelenítése, mint a "Long_Query_Time";

A dinamikus telepítési értékek fő hátránya elveszik a rendszer indításakor. Javasoljuk, hogy a MySQL konfigurációban fontos paramétereket adjon meg.

A jegyzet: A szintaxis a dinamikus paraméterek beállítása a SET parancsot, és a konfigurációs fájl kicsit más, mint a Slow_Query_Log / Slow-Query-Log. A hivatalos DBMS dokumentációban megtalálja a szintaxis teljes leírását. Az opció-fájlformátum a konfigurációs fájlhoz, a rendszerváltozó nevéhez - változó nevekhez használható, ha dinamikusan beállítja az értékeket.

Adatgenerálás kérésre profilozásra

Megnéztük a fő profilozó konfigurációs elemeket, most már érdekelt kéréseket hoztunk létre. Ezt a példát a MySQL kiszolgálón futott a korábbi naplóbeállítások nélkül. A kérelmek példái a MySQL GUI és a DBMS parancsok segítségével futhatnak. Ha figyelemmel kíséri a szakasz kérelem napló, két ablak a kapcsolat gyakran nyitva van: az egyik, hogy indul kéri, a másik -, hogy megtekinthesse a napló.

$\u003e mysql -u -p mysql\u003e Adatbázis-profil létrehozása; Mysql\u003e Profil_sampling használata; MySQL\u003e Asztali felhasználók létrehozása (ID Tinyint primer gomb Auto_Increment, Varchar név (255); MySQL\u003e Helyezze be a felhasználókat (név) értékeket ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie"), ("Marie"), ("Marie") ( "Saul"), ("gustavo"), ("Hector"), ("mike"); mysql\u003e Set globális slow_query_log \u003d 1; MySQL\u003e Set globális slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log"; MySQL\u003e Set globális log_queries_not_using_indexes \u003d 1; Mysql\u003e Set long_query_time \u003d 10; MySQL\u003e SET MIN_EXAMININED_ROW_LIMIT \u003d 0;

Most van egy adatbázis tesztadatokkal. Elindítottuk profilalkotást, de a válaszidőt és az általunk kifejezetten kicsi sorok számát. A napló megtekintéséhez használja a csapatot:

CD / var / log / mysql ls -l

Az ötlet szerint a naplófájl még nem létezhet, mivel nem tettünk kéréseket az adatbázisba. Ha létezik, ez azt jelenti, hogy a profilalkotás korábban konfigurálva van, és ez torzíthatja a példa eredményeit. Végezze el a konzolon:

Mysql\u003e Profil_sampling használata; MySQL\u003e Válassza a * lehetőséget a felhasználóktól, ahol ID \u003d 1;

A kérésünk az elsődleges kulcsindexet használja az asztalról. A kérés nagyon gyorsan működött az index használatával, így a naplóban nem szabad tükröznie. Kérjük, vegye figyelembe, hogy a naplófájl nem hozható létre.

Most tegye a következőket:

Mysql\u003e Válassza a * lehetőséget a felhasználóktól, ahol a név \u003d "Jesse";

Itt nem használtunk indexeket. Most meg kell látnunk ezt a lekérdezést a naplóban:

Sudo cat /var/log/mysql/localhost-slow.log # idő: 140322 13:54:58 # [E-mail védett]: root @ localhost # Query_Time: 0.000303 Lock_Time: 0.000090 Rows_Sent: 1 sors_examined: 10 Használja profil_sampling; Állítsa be az időbélyegzőt \u003d 1395521698; Válassza ki a * -ot a felhasználóktól, ahol a név \u003d "Jesse";

Tekintsünk egy másik példát. Emelje fel a sorok számát a válaszul, és kövesse a következő kérést:

MySQL\u003e SET MIN_EXAMINING_ROW_LIMIT \u003d 100; MySQL\u003e Válassza a * lehetőséget a felhasználóktól, ahol a név \u003d "Walter";

A kérés nem befolyásolja a naplót, mivel nem haladjuk meg a 100 sort a kérelemre válaszul.

A jegyzet: Ha az adatok nem jelennek meg a naplóban, akkor először a következő tényezőket kell figyelembe venniük. Az első a könyvtárhoz való jog, ahol a naplófájl tárolódik. A csoportnak és a felhasználónak meg kell egyeznie a MySQLD felhasználónak, a jogoknak - Chmod 755-nek kell lenniük. A második - a korábban konfigurálva van. Törölje a profilozó változók összes meglévő értékét a konfigurációs fájlból, és indítsa újra a kiszolgálót, vagy állítsa be a változókat dinamikusan. Ha a dinamikus módszert használta, elhagyja és visszatér a MySQL konzolhoz.

Lekérdezési profilosítási adatok elemzése

Tekintsük a fenti példát:

# Idő: 140322 13:54:58 # [E-mail védett]: root @ localhost # Query_Time: 0.000303 Lock_Time: 0.000090 Rows_Sent: 1 sors_examined: 10 Használja profil_sampling; Állítsa be az időbélyegzőt \u003d 1395521698; Válassza ki a * -ot a felhasználóktól, ahol a név \u003d "Jesse";

Itt látjuk:

  • A kérés elindításának időpontja
  • A kérelmet végrehajtó felhasználó
  • Nyitvatartási idő
  • Zárási időtartam
  • A kiválasztott karakterláncok száma
  • Az elemzett karakterláncok száma

Ez az adatok nagyon hasznosak, mivel segítségükkel megtalálhatjuk és megszüntethetjük a rendszer lassulásának okát. Továbbá a MySQL fejlesztője vagy adminisztrátora mindig képes lesz látni a problémák kéréseit, és szeretné megjegyezni, hogy sokkal gyorsabban találják őket, mint az alkalmazáskód alkalmazásának megismerése. Hosszú profilozással nyomon követheti a működési feltételeket alacsony sebességgel.

A mysqldumppslow használatával

A napló folyamatosan rögzíti az adatokat, szabályként sokkal többet ír, mint olvasta. Nagy log méretű, problémás lesz, hogy elolvassa. A MySQL tartalmazza a MySqldumpslow eszközt, amely segít fenntartani a napló integritását. Maga a program kombinálódik a MySQL-vel (Linux rendszereken). Használja, hajtsa végre a szükséges parancsot, és adja át a naplófájl elérési útját:

Sudo mysqldumpslow -t 5 -s at /var/log/mysql/localhost-slow.log

Számos paraméter van, hogy segítsen konfigurálni a parancs kimenetét. Az alábbi példában az utolsó öt kérés közepes időtartamra sorolható. Ennek eredményeként a napló olvasása sokkal kényelmesebb lesz. (A kimenet megváltozik, hogy megjelenítse a tényleges értékeket a naplóban):

Szám: 2 idő \u003d 68.34s (136s) Lock \u003d 0,00S (0S) sor \u003d 39892974.5 (79785949), [E-mail védett] SELECT PL.PL_TITLE, P.Page_TITLE pagi inner join PAGELINKS PL ON PL.PL_NAMESPACE \u003d P.PAGE_NAMESPACE \u003d n ...

Amit látunk:

  • Szám - a kérések száma a naplóban
  • Idő - Átlagos és teljes lekérdezési idő
  • Lock - asztalzár idő
  • Sorok - a kiválasztott vonalak száma

A parancs kiküszöböli a kérelem numerikus és karakterlánc adatait, azaz azon lekérdezések, amellyel az állapotot azonosítják. Ennek az eszköznek köszönhetően nem kell folyamatosan böngésznie a naplót. A nagyszámú parancsparaméterek miatt rendezheti a kimenetet, mivel kényelmes az Ön számára. Vannak hasonló funkcionalitású, hasonló funkcionalitású fejlesztők fejlesztése is, mint például a Pt-Query-Digest.

Vezetői kérések

Ezt egy másik eszközre kell fizetni, amely lehetővé teszi a komplex lekérdezések megszakítását. Leggyakrabban kérést kell tennie a naplóból, majd futtassa közvetlenül a MySQL konzolban. Először be kell kapcsolnia a profilalkotást, majd végrehajtja a lekérdezést:

MySQL\u003e Állítsa be a munkamenet profilját \u003d 1; Mysql\u003e Profil_sampling használata; Mysql\u003e Válassza a * lehetőséget a felhasználóktól, ahol a név \u003d "Jesse"; MySQL\u003e Profilok megjelenítése;

A profilozás bekapcsolása után a profilok megjelenítése megjeleníti a táblázatkötési query_id és az SQL kifejezést. Keresse meg a megfelelő Query_ID-t, és kövesse a következő kérést (Cserélje a # -t a Query_ID-re):

MySQL\u003e Válassza a * lehetőséget az Information_Schema.profiling-ről, ahol Query_Id \u003d #;

Példa a kimenetre:

SEQ State Időtartam 1 Kezelés 0.000046 2 Engedélyek ellenőrzése 0,000005 3 Nyitóasztalok 0,000036

Állapot - lépés a lekérdezés végrehajtásának folyamatában, Időtartam - Indítsa el az időtartamot másodpercben. Ezt az eszközt nem olyan gyakran használják, de néha rendkívül hasznos lehet a kérelem sebességének csökkentésének okának meghatározásában.

Részletes oszlop leírása:

A lépések részletes leírása:

A jegyzet: Ezt az eszközt nem szabad használni a kiszolgáló üzemmódban, kivéve az egyedi lekérdezések elemzését.

Sebesség sebesség sebessége

Az utolsó kérdés az, hogy a profilalkotást a szerver sebessége befolyásolja. A szerver termékmódjában biztonságosan használhatjuk az ilyen naplózást, nem befolyásolhatja a CPU-t az I / O-on. Mindazonáltal érdemes figyelmet fordítani a naplófájl méretére, nem szabad megtiltani. A tapasztalatoktól is szeretném megjegyezni, hogy a LONG_QUERY_TIME költségek értékének értéke 1 másodperccel egyenlő.

Fontos: Ne használd a profilkészítő eszközt - Set Profiling \u003d 1 - az összes kérés rögzítéséhez, azaz. A General_Log változó a termékben és nagy terhelésekben nem ajánlott használni.

Következtetés

A lekérdezési profilozás nagyon segíthet abban, hogy kiemelje a problémát kérelmet és az általános teljesítményértékelést. A fejlesztő feltárhatja azt is, hogy a MySQL kéri az alkalmazásokat. A mysqldumpslow eszköz segít a kérés naplójának megtekintéséhez és feldolgozásához. A problémák kéréseinek meghatározása után be kell állítania őket a maximális teljesítmény érdekében.

A MySQL lekérdezési profilozás hasznos módszer az adatbázis alapján alapuló alkalmazások teljes teljesítményének elemzésére. A közepes és nagy alkalmazások fejlesztésekor általában több száz kérés kerül elosztásra egy nagy kód alapon, és az adatbázis több kérést végez másodpercenként. Profiling lekérdezések nélkül nagyon nehéz meghatározni a keskeny alkalmazások előfordulásának megállapítását és okait. Néhány hasznos lekérdezési profilozási módszert ismertetünk ebben a kézikönyvben a beépített MySQL eszközök segítségével.

Mysql lassú lekérdezések naplója

MYSQL lassú kérelem log (vagy Lassú Query Log) egy naplót, amelyben MySQL küld lassú és potenciálisan problémát kéri.

Ez a funkció a MySQL-vel rendelkezik, de az alapértelmezett le van tiltva. A MySQL meghatározza, hogy mely kérelmeket kell hozzáadni ehhez a naplóhoz speciális változók segítségével, amelyek lehetővé teszik az alkalmazások teljesítményei alapján történő kérelmet. Jellemzően a lekérdezések e naplóra készülnek, amelynek feldolgozása több időt vesz igénybe, és a hibás indexek lekérdezései.

Változó profilozás

Alapvető kiszolgálóváltozók A Lassú MySQL kérések naplójának konfigurálásához:

slow_query_log globális
Slow_query_log_file globális
Long_Query_Time Global / Sessional
log_queries_not_using_indexes globális
min_examined_row_limit global / sessional

a Slow_Query_Log logikai változó a lassú kérések be- és kikapcsolásához.

slow_query_log_file a lekérdezési naplófájl abszolút útja. A fájlkönyvtárnak a MySQLD felhasználóhoz kell tartoznia, és megfelelő olvasási és írási jogokat tartalmaz. A MySQL démon valószínűleg a MySQL-ként indul, de győződjön meg arról, hogy elindítja a parancsot a Linux terminálban:

pS -F | Grep bin / mysqld | Vágott "" -f1

A kimenet megmutatja az aktuális felhasználót és a mysqld felhasználót.

cD / var / log
mkdir mysql
Chmod 755 mysql
Chown mysql: mysql mysql

  • lONG_QUERY_TIME - idő másodpercben, hogy ellenőrizze a lekérdezést. Ha 5 a naplóban regisztrálja az összes kérést, amelynek feldolgozása több mint 5 másodpercet vesz igénybe.
  • log_quies_not_using_indexes - olyan logikai érték, amely meghatározza, hogy regisztrálnia kell-e olyan kéréseket, amelyek nem használnak indexeket. Az elemzés során az ilyen kérések fontosak.
  • mIN_EXAMINING_ROW_LIMIT - Meghatározza az elemzéshez szükséges sorok minimális számát. Az 1000 értékkel minden olyan kérés, amely 1000 vonalat elemez, figyelmen kívül hagyja.

A MySQL szerver változók telepíthetők a MySQL konfigurációs fájlba, vagy dinamikusan a felhasználói felület vagy a MySQL parancssor segítségével. Ha a változók telepítve vannak a konfigurációs fájlba, akkor a kiszolgáló újraindításakor kerül mentésre, de aktiválja őket, hogy újra kell indítania a kiszolgálót. A MySQL konfigurációs fájl általában az /etc/my.cnf vagy /etc/mysql/my.cnf. A konfigurációs fájl megtalálásához írja be (talán meg kell bővítenie az egyéb root könyvtárak keresését):

talál / etc -name my.cnf
Keresse meg / usr -name my.cnf

Ha konfigurációs fájlt talált, adja hozzá a kívánt változókat a szakaszhoz:


….
Lassú lekérdezés-log \u003d 1
Lassú lekérdezés-log-file \u003d /var/log/mysql/localhost-slow.log
LONG_QUERY_TIME \u003d 1.
Log-lekérdezés-nem használható indexek

A módosítások módosításához újra kell indítania a kiszolgálót. Ha a módosításokat azonnal aktiválni kell, állítsa a változókat dinamikusan:

mysql\u003e Set Global Slow_Query_log \u003d "Be";
MySQL\u003e Set globális slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log";
MySQL\u003e Set Global log_queries_not_using_indexes \u003d "Be";
MySQL\u003e Set Session Long_Query_Time \u003d 1;
MySQL\u003e Set Session MIN_EXAMININED_ROW_LIMIT \u003d 100;

A változók értékeinek ellenőrzése:

mySQL\u003e A globális változók megjelenítése, mint a "Slow_Query_log";
MySQL\u003e A munkamenetváltozók megjelenítése, mint a "Long_Query_Time";

A MySQL változók dinamikus változásainak egyik hiányossága az, hogy a változók elvészek, amikor a kiszolgáló újraindul. Ezért minden fontos változó, amelyet meg kell menteni, hozzá kell adni a fájlhoz.

Kérjen generálást profilozáshoz

Most már ismeri a lassú kérések naplóinak beállításait. Próbálja meg létrehozni a kérésadatokat a profilozáshoz.

jegyzet: A példa itt a MySQL futási példányán keresztül történik, anélkül, hogy beállítaná a lassú kérések naplóit. Ezek a vizsgálati lekérdezések végrehajthatók a grafikus felületen vagy a MySQL parancssorban.

A lassú lekérdezési napló megfigyelésénél két kapocs-ablakot nyit meg: Egy kapcsolat a MySQL operátorok küldéséhez, a második pedig a kérés naplójának megtekintéséhez.

Menjen a MySQL kiszolgálóra a konzol használatával Super Admin kiváltságokkal. A kezdethez hozzon létre egy tesztadatbázist és egy táblát, adjon hozzá fiktív adatokat, és kapcsolja be a slot kérés naplóját.

jegyzet: Ideális esetben ez a példa jobb, ha a MYSQL-t használó más alkalmazások nélküli közegben végezhető, hogy elkerülje a kérelem naplózását.

$\u003e Mysql -u -p
mySQL\u003e Adatbázis-profil létrehozása;

Mysql\u003e Profil_sampling használata;


MySQL\u003e Asztali felhasználók létrehozása (ID Tinyint primer gomb AUTO_INCREMENT, NAME VARCHAR (255));


MySQL\u003e Helyezze be a felhasználókat (név) értékeket ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie"), ("Marie"), ("Marie") ( "Saul"), ("gustavo"), ("Hector"), ("mike");


mysql\u003e Set globális slow_query_log \u003d 1;


MySQL\u003e Set globális slow_query_log_file \u003d "/var/log/mysql/localhost-slow.log";


MySQL\u003e Set globális log_queries_not_using_indexes \u003d 1;


Mysql\u003e Set long_query_time \u003d 10;


MySQL\u003e SET MIN_EXAMININED_ROW_LIMIT \u003d 0;

Most van egy tesztadatbázis és egy kis mennyiségű asztal. Napló lassú kérések. Szándékosan telepítettük a magas időfeladási időt, és kikapcsoltuk a sorok számát. A napló megtekintéséhez írja be:

cD / var / log / mysql
Ls -l

Eddig nem lehet bejelentkezni a mappában a mappában, mivel jelenleg nem volt kérés. Ha ilyen napló már ott van, akkor azt jelenti, hogy az adatbázis már lassú kérésekkel találkozott, mivel támogatta a lassú kérések naplójának támogatását. Ez torzíthatja a példa eredményeit. Visszatérés a MySQL lapra és indítsa el:

mysql\u003e Profil_sampling használata;
MySQL\u003e Válassza a * lehetőséget a felhasználóktól, ahol ID \u003d 1;

A végrehajtott kérelem egyszerűen megkeresi az adatokat, és az első kulcsindexet használja az asztalról. Ez a kérés gyors és használta az indexet, így a Slot kérés naplójában nincs regisztrálva. Visszatérés a könyvtárba, és győződjön meg róla, hogy a kérés naplója nem jött létre. Most menjen vissza a MySQL ablakba, és futtassa:

mysql\u003e

Ez a lekérdezés nem használja az indexet. Most a /var/log/mysql/localhost-slow.log naplóban megközelítőleg egy ilyen bejegyzésnek kell megjelennie:

# Idő: 140322 13:54:58

Használja a profil_sampling-ot;
Állítsa be az időbélyegzőt \u003d 1395521698;

Még egy példa. Növelje az elemzéshez szükséges sorok minimális számát, és küldjön egy ilyen kérelmet:

mySQL\u003e SET MIN_EXAMINING_ROW_LIMIT \u003d 100;
MySQL\u003e Válassza a * lehetőséget a felhasználóktól, ahol a név \u003d "Walter";

Az adatokat nem adják hozzá a naplóhoz, mivel a kérés során kevesebb mint 100 sort elemeztek.

jegyzet: Ha az adatokat nem adták hozzá a naplóhoz, több tényezőt kell ellenőriznie. Először ellenőrizze a naplót létrehozó könyvtár jogait. Meg kell tartozik a felhasználó / csoport Mysqld és chmod 755 jogosultsággal. Akkor érdemes megnézni, ha nincsenek lassú kéréseket a szerver, amely felülírja a paramétereket. Állítsa vissza az alapértelmezett értékeket, hogy törölje a lassú lekérdezések összes változóját a konfigurációs fájlból, és indítsa újra a kiszolgálót. Dinamikusan beállíthatja a globális változókat a szabványos értékekhez. Ha dinamikusan változtat, lépjen ki a rendszerből, és jelentkezzen be a MySQL-be \u200b\u200ba paraméterek frissítéséhez.

Kérjen profilozási adatelemzést

Fontolja meg ezeket az adatokat:

# Idő: 140322 13:54:58
# [E-mail védett]: Root @ localhost
# Query_Time: 0.000303 LOCK_TIME: 0,000090 ROWS_SENT: 1 sors_examined: 10
Használja a profil_sampling-ot;
Állítsa be az időbélyegzőt \u003d 1395521698;
Válassza ki a * -ot a felhasználóktól, ahol a név \u003d "Jesse";

Ez a bejegyzés megjeleníti:

  • Kérjen végrehajtási időt
  • Aki elküldte
  • Mennyi ideig dolgozták fel a kérés
  • Hossz
  • Hány sor visszatért
  • Hány sor van elemezve

Ez hasznos, mivel bármely olyan kérés, amely megsérti a változókban meghatározott teljesítménykövetelményeket a naplóba. Ez lehetővé teszi a fejlesztő vagy a rendszergazda számára, hogy gyorsan figyelemmel kísérje a nem működőképes kérelmeket. Ezenkívül a kérésprofil-adatok segítenek meghatározni, hogy milyen körülmények csökkentik az alkalmazás teljesítményét.

A mysqldumppslow használatával

A profilalkotás a BD-alapú alkalmazásokban szerepelhet, hogy mérsékelt adatfolyamot biztosítson.

Mivel a naplóméret növekszik, nehéz lesz szétszerelni az összes adatot, és a problémák kérései könnyen elveszhetnek benne. A MySQL a MySqldumplow eszközt kínálja, amely segít elkerülni ezt a problémát a lassú kérések társadalmának elválasztásával. A bináris fájl a MySQL (Linux) társul, így egyszerűen futtathatja a parancsot:

mysqldumpslow -t 5 -s at /var/log/mysql/localhost-slow.log

A kimenet konfigurálásához a parancs különböző paramétereket kaphat. A fenti példában az első 5 kérés a középpontban rendeződik A lekérdezési idő megjelenik. Az ilyen vonalak olvashatóbbak, és kérésre csoportosítják.

Szám: 2 idő \u003d 68.34s (136s) Lock \u003d 0,00S (0S) sor \u003d 39892974.5 (79785949), [E-mail védett]
Válassza a PL.PL_TITLE, P.PAGE_TITLE lehetőséget
A P. oldalról
Belső csatlakozás Pagelinks pl
A pl.pl_namespace \u003d p.page_namesce
Ahol p .page_namespace \u003d n

A kimenet tükrözi az ilyen adatokat:

  • Számol: Hányszor lépett be a kérés a naplóba.
  • Idő: átlagos és teljes lekérdezési idő (zárójelben).
  • Zárolás: táblázat blokkolási idő.
  • Sorok: A visszaadott sorok száma.

A parancs kiküszöböli a numerikus és a karakterlánc értékeit, mivel ugyanazok a kérések, amelyek eltérőek, amennyiben a feltételek azonosak. A MySQLDUMPSLOW eszköz kiküszöböli, hogy folyamatosan böngészni kell a lassú kérések naplóját, hanem a rendszeres automatikus ellenőrzéseket. A mysqldumpslow parancsparaméterek lehetővé teszik, hogy komplex kifejezéseket végezzen.

Vezetői kérések

Egy másik profilozó eszköz, amelyről emlékezni kell egy olyan eszköz, amely a kérelmek összetett bontásának eszköze. Lehetővé teszi a problémák kéréseinek azonosítását egy lassú lekérdezési naplóban, és futtassa a MySQL-ben. Először is, engedélyeznie kell a profilalkotást, majd végrehajtja a lekérdezést:

mySQL\u003e Állítsa be a munkamenet profilját \u003d 1;
Mysql\u003e Profil_sampling használata;
Mysql\u003e Válassza a * lehetőséget a felhasználóktól, ahol a név \u003d "Jesse";
MySQL\u003e Profilok megjelenítése;

A bekapcsolás után a profilok megjelenítése egy táblázatot mutat, amely megköti a Query_ID-t az SQL kifejezéssel. Keresse meg a Query_ID-t, amely megfelel az elindított lekérdezést, és indítsa el a következő kérést (cserélje ki # a query_id):

mySQL\u003e Válassza a * lehetőséget az Information_Schema.profiling-ről, ahol Query_Id \u003d #;

A csapat visszaadja az asztalt:

SEQ. Állapot Időtartam
1 kezdve. 0.000046
2 engedélyek ellenőrzése 0.000005
3 megnyitó táblák 0.000036

Az állam egy lépés a lekérdezés végrehajtásának folyamatában, és az időtartam az idő, amely a lépés befejezéséhez másodpercekben befejezéséhez szükséges idő. Ez nem nagyon hasznos eszköz, de segíthet meghatározni, hogy a lekérdezés végrehajtásának melyik része a legnagyobb késéssel jár.

jegyzet: Ezt az eszközt nem szabad felhasználni a termelési környezetben.

Aktuális kérés napló teljesítménye

Csak arra törekszik, hogy kitalálja, hogy a lassú kérések csúszka befolyásolja a termelékenységet. Általában a lassú lekérdezések naplójának futtatása a termelési környezetben biztonságos; Sem a CPU, sem az I / O szenved. Mindazonáltal rendelkeznie kell egy stratégiával a napló méretének megfigyelésére, hogy a napló túl nagy legyen a fájlrendszerhez. Ezen túlmenően, ha indít egy olyan társadalomban, lassú kéréseket a termelési környezetben állítsa Long_Query_time értéke 1 vagy ennél nagyobb.

Következtetés

A lassú kérések naplója segíthet azonosítani a problémákat, és értékeli a kérelmek teljes teljesítményét. Ugyanakkor a fejlesztő részletes ötletet kaphat arról, hogy a MySQL lekérdezések hogyan kerülnek végrehajtásra az alkalmazásban. A MySqlDumpslow eszköz lehetővé teszi, hogy ellenőrizze a lassú kérések naplóit, és könnyen beillesztheti őket a fejlesztési folyamatba. A problémák meghozatala, optimalizálhatja a termelékenység növelésére irányuló kérelmek feldolgozását.

Címkék:

Koncepció

Szervernaplók (szervernapló, szervernapló) - A rendszerinformációs információkat tartalmazó kiszolgálón tárolt Fals, valamint a webes erőforrás látogatójának összes lehetséges adatainak logoja.

A naplókat a rendszergazdák használják a látogatók elemzéséhez., A felhasználók egyes csoportjainak viselkedésének mintáinak tanulmányozása, valamint különböző információk fogadása rájuk, mint például: használt böngésző, IP-cím, adatok az ügyfél földrajzi helyzetéről és még sok másra. Az elemzéssel, így megismerheti a jogosulatlan hozzáférést a webhelyhez, pontosabban, hogy megtudja, ki pontosan ki volt állítva, és közvetíti az adatokat ebben az esetben az illetékes hatóságoknak.

Az adatok a log fájlba, a tiszta formájában, nem lesz egyértelmű, hogy a hétköznapi felhasználók, akik látni fogjuk mindezt csupán egy sor karakter érthetetlen érdekében. De a rendszergazdák és a webfejlesztők számára meglehetősen olvasható szöveg és elég hasznos információ.


Eseménysor

Minden ügyfél hozzáférése a webes erőforráshoz, több esemény azonnal bekapcsolódik, amelynek sorrendje beszélünk.

1. Oldalkérkezés. Amikor beírja a címet a böngészővonalhoz, vagy amikor aktív weblinkre megy, mondja el a keresési eredményoldalról, a böngésző keresésére és csatlakozik a kiszolgálóhoz, amelyen az oldal található, és végrehajtja kérését. Ugyanakkor ilyen információkat továbbít a kiszolgálónak:
- az ügyfél számítógépének IP-címe, amely az oldalt kéri (proxykiszolgáló használatakor, a proxy IP-címe);
- az internetes oldal felhasználója által kért cím (IP-cím);
- pontos idő és dátum, amikor kérést készítettek;
- az ügyfél tényleges helyére vonatkozó adatok (ha proxykiszolgálót használnak, akkor a tényleges proxy cím);
- az ügyfél által használt böngészővel kapcsolatos információk (név, verzió stb.);
- olyan weboldalon, amellyel az ügyfél átmenetét elvégezték.

2. A kért adatok átadása. A kért adatok továbbítása történik (internetes oldal, fájlok, cooki stb.) A szerverről a felhasználó számítógépére.

3. Jegyezze fel a szervernaplóba. Végtére is, a napló rögzítve van, amely jelzi az elmúlt két eseményen megjelenő összes adatot. Ez az első bekezdésben elküldött összes információ, valamint a továbbított adatokról szóló információk.

Hogyan láthatjuk a kiszolgáló naplóit

A fájlban tárolt naplófájlok access.log. Nem attól függően, hogy milyen típusú webszerver használata (Apache, Nginx, a Squid proxy szerver, stb) Ez a fájl egy szöveges dokumentumot, minden sora, amely rögzíti egy fogantyút. Felvételi formátumok B. Access.log. Nagyon sok, de a legnépszerűbb, amelyben a felvétel a következő formanyomtatvány és sorrend:

Kód:% H% L% U% T \\ "% R \\" %\u003e S% B \\ "% (Referer) i \\" \\ "% (User-Agent) i \\"
Hol:

% H. - a fogadó / IP-cím, amelyből a kérés történt;
% T. - A szerver és az időzónák szerverének kérése;
% R. - változat, tartalom és lekérdezés típusa;
% S. - HTTP-államkód;
% B. - a kiszolgáló által szolgáltatott bájtok száma;
% (Referer) - URL lekérdezési forrás;
% (Felhasználói ügynök) - HTTP-cím, kérés információval (ügyfélalkalmazás, nyelv stb.);
% (HÁZIGAZDA) - A virtuális állomás neve, amelyhez fellebbezés van.

a kész formában ez a karakterlánc a következő űrlapot tartalmazza:

127.0.0.1 - "Get /index.php http / 1..0 (kompatibilis, MSIE 7.0, Windows NT 5.1)"

A naplók kézikönyvének olvasásához nagyon sok időt és erőt vesz igénybe. Ezért a tapasztalt webmesterek speciális szoftvert használnak, amelyek "naplófájlokat" hívnak. Elemezzék azokat az adatokat, amelyek meglehetősen összetettek, hogy elolvassák a személy, és strukturált adatok kiadása. Ezek olyan programok, mint: Analóg, Webanalizer, Webalizer, Awstats, WebTrendek stb. A speciális szoftverfajok nagyon sokat, köztük vannak olyan fizetett programok és ingyenesek. Ezért biztos vagyok benne, hogy mindenki talál valamit.

Hol találja meg a webhelynaplókat

Ha rendes tárhelyed van, akkor valószínűleg meg kell írnia a fogadónak és kérvénynaplókat. Ugyanaz, nagyon gyakran kérheti őket a Hoster panelen keresztül. Különböző vendégek - különböző módon. Például, hogy kérje a hosteremet, elegendő egy kattintás a panel főoldalára:


Ha hozzáférhet a Server System mappákhoz, akkor a naplók címre találhatók / etc / httpd / logs / access_log 99 esetben 100-ból.

Hiba bejelentkezési hiba.log.

Error.log. - az a fájl, amelyben a naplók is folyamatban vannak. De nem a látogatók, de a kiszolgáló hibái. Mint a access.log.Minden fájlsor egy hibaért felelős. A rekord végezzük figyelembe véve ezeket az információkat, mint: a pontos dátum és idő a hiba előfordulását, az IP-címét, amelyben a hiba kiadták, a hiba jellege, valamint az oka annak előfordulása.

Következtetés

A rönkök meglehetősen erőteljes és informatív eszköz, amellyel dolgozni kell. De idejükben ezek az olyan eszközök, mint a yandex.metrica, a Google Analytics stb., Ezáltal egyszerűsítve az életünket. Ha azonban fejleszteni, növekedni és ismerni valami újat, kétségtelenül javasoljuk, hogy megismerkedjen ezzel a témával.

Az eseménynaplók az első és legegyszerűbb eszköz a rendszer állapotának meghatározásához és a hibák azonosításához. Fő rönk a MySQL négyben:

  • Hiba napló. - szabványos hibaüzenetek, amelyeket a kiszolgáló üzemeltetése során gyűjtenek (beleértve a start és a stop);
  • Bináris napló. - a BD-változás minden parancsának naplója, a replikációhoz és a mentésekhez szükségesek;
  • Általános lekérdezési napló. - a kérelmek fő naplója;
  • Lassú lekérdezési napló. - Lassú kérések naplója.

Naplóhiba

Ez a magazin tartalmaz minden hibát, hogy történt a szerver üzemeltetés, beleértve a kritikus hibákat, valamint a megállási, lehetővé szerverek és a figyelmeztetések (figyelmeztetések). Rendszerhiba esetén kell elkezdenie. Alapértelmezésben minden hibát megjelenik a konzolon (STDERR), akkor is rekord hibák syslog (alapértelmezett Debian), vagy egy külön log file:

Log_error \u003d / var / log / mysql / mysql_error.log

# A hibák a mysql_error.log-ban íródnak

Javasoljuk, hogy ez a magazin engedélyezve legyen, hogy gyorsan meghatározza a hibákat. És megérteni, hogy mi a hiba, ami azt jelenti, hogy egy vagy másik, a Perror segédprogram jelen van a MySQL-ben:

Shell\u003e Perror 13 64 OS hibakód 13: engedélyt megtagadott OS hibakód 64: A gép nincs a hálózaton

# Megmagyarázza a hibakódok értékeit

Bináris (egy bináris) napló

Az összes adatbáziscsere parancsot a bináris naplóban rögzítjük, hasznos replikáció és a helyreállítás.

Kapcsolja be ezt:

Log_bin \u003d /var/log/mysql/mysql-bin.log expire_logs_days \u003d 5 max_binlog_size \u003d 500m

# A helyszínt, az életet és a maximális fájlméretet jelzi

Ne feledje, hogy ha nem fogja méretezni a rendszert, és hajtsa végre a hibatűrést, akkor a bináris napló nem tartalmazza. Erőforrásokat igényel, és csökkenti a rendszer teljesítményét.

Napló kérések

Ez a napló tartalmazza az összes fogadott SQL lekérdezést, az ügyfélkapcsolatokkal kapcsolatos információkat. Hasznos lehet az indexek és az optimalizálás elemzésére, valamint a hibás kérések azonosítására:

General_log_file \u003d /var/log/mysql/mysql.log. general_log \u003d 1.

# Bekapcsolja a naplót, és jelzi a fájl helyét

Lehetővé teheti / letilthatja a MySQL szerver működését:

Set globális általános_log \u003d "Be"; Set Global General_Log \u003d "OFF";

# A használatra nem kell újraindítani a kiszolgálót

Lassú kérések naplója

A magazin hasznos lehet lassan meghatározni, azaz nem hatékony kérések. Olvass tovább ez a cikk.

Naplók megtekintése

A debian (Ubuntu) naplóinak megtekintéséhez:

# Log hibák hátsó -f / var / log / syslog # tail -f /var/log/mysql/mysql.log # Napló lassú kérésektail -f /var/log/mysql/mysql-slow.log.

# Ha a naplókat nem tartalmaz külön-külön, akkor a / var / lib / mysql

A naplók forgatása

Ne felejtse el tömöríteni (archiválni, forgatni) naplófájlokat, hogy kevesebb helyet foglaljanak el a kiszolgálón. Ehhez használja a segédprogramot logrotate.A konfigurációs fájl szerkesztésével /etc/logrotate.d/mysql-server:

# - tettem mindent egy blokkba, majd SharedScripts úgy, hogy a MySQL Gets # Falba Naplók „D Csak egyszer. # ELSE bináris rönköt automatikusan növeli n-szeresével minden nap. # - A hiba napló elavult, az üzenetek a Syslogba mennek./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log. (Napi forgatás 7 Hiányzó létrehozása 640 MySQL ADM tömörítés SharedScripts Postrotate Test -x / usr / bin / mysqladmin || kilépés 0 # Ha ez nem sikerül, ellenőrizze a Debian.conf-t! MyAdmin \u003d "/ usr / bin / mysqladmin --Defaults-file \u003d / etc / mysql / debian.cnf", ha [-Z "` $ myadmin ping 2\u003e / dev / null`"]; Azután. # Tényleg nincs mysqld vagy inkább egy hiányzó Debian-Sys-Maint felhasználó? # Ha ez bekövetkezik, és nem hiba, kérjük, jelentse be a hibát. #IF PS CAX | grep -q mysqld; Azután. Ha a killall -q -s0 -umysql mysqld; Ezután lépjen ki 1 fi más $ MyAdmin flush-logs fi endscript-en)

# Tömöríti és archiválja a kívánt naplókat, törli a fájlokat

DDL napló.

A MySQL az adatleírás nyelvi naplót is vezet. Drop_Table és Alter_Table gyűjtik be benne. A naplót az ilyen műveletek végrehajtása során bekövetkezett hibák visszaállítására használják. A DDL napló egy bináris fájl, amely nem foglalkozik a felhasználónak, ezért ne módosítsa, és ne törölje azt.

A legfontosabb dolog

Mindig kapcsolja be a hiba napló, használja a kérés napló ellenőrizze az alkalmazás az adatbázissal kapcsolatos ellenőrzéseket és a munka ellenőrzéseket. A lassú kérések csúszása hasznos a MySQL munkájának optimalizálására.



Tetszett a cikket? Oszd meg