Kontakty

Ako vypnúť protokol pomalých požiadaviek. Prihlásenie do MySQL. Analýza dát profilovania dotazu

Profilovacie dotazy v Mysql Na posúdenie výkonu vašej aplikácie. Pri vývoji stredných a veľkých aplikácií je potrebné riešiť stovky požiadaviek distribuovaných podľa vášho kódu, ktoré sú vykonané každú sekundu. Žiadna technika profilovania dotazu je veľmi ťažké nájsť kvôli tomu, čo trpí rýchlosť vašej aplikácie.

Čo je pomalé dotazy v Mysql?

Veľkosť pomalých požiadaviek v MySQL je log, zaznamenávajú pomalé a potenciálne problematické požiadavky. MySQL štandardne podporuje takúto funkčnosť, ale je to zakázané. Pomocou konfigurácie určitých premenných serverov môžeme určiť, ktoré požiadavky máme záujem. Najčastejšie potrebujeme otázky, ktoré vyžadujú určité množstvo Čas na vykonanie alebo dotazov, ktoré nesprávne spracovávajú indexy.

Nastavenie variabilného profilovania

Základné premenné pre nastavenie protokolov požiadaviek:

SLOW_QUERY_LOG G SLOP_QUERY_LOG_FILE G LONG_QUERY_TIME G / S LOG_QUERE_NOT_USE_INDEXES G MIN_EXAMINED_ROW_LIMIT G / S

Komentár: G - Globálne premenné, S - Systémové premenné

  • sLOW_QUEERY_LOG - BOOLEANOVÁ HODNOTA vrátane LOGHT
  • sLOW_QUERY_LOG_FILE je absolútnou cestou k súboru denníka. Majiteľ katalógu musí byť užívateľom mysqld.A adresár musí mať správne povolenia na čítanie a písanie. Najčastejšie je MySQL Daemon beží v mene používateľa mySQL.

Ak chcete skontrolovať, spustite nasledujúce príkazy:

Ps -ef | Grep Bin / MySQLD | Cut -d "" -f1

Výstup príkazu vám poskytne názov aktuálneho používateľa a MySQLD. Príklad konfigurácie adresára / var / log / mysql:

CD / VAR / LOG SUDO MKDIR MYSQL SUDDO CHMOD 755 MYSQL SUDDO SHOWN MYSQL: MYSQL MYSQUL

  • long_query_time - čas v sekundách, aby ste skontrolovali trvania dotazu. Napríklad, s 5, každá požiadavka na viac ako 5 sekúnd sa zaznamenáva do denníka.
  • lOG_QUEERSE_NOT_USE_INDESEXES - BOOLEANOVÁ HODNOTKA, KTORÝKOĽVEK NEPOUŽÍVATEĽSKÝCH POSTUPOV, KTORÝMI POTREBY NEPOUŽÍVAJTE INDEXY. Takéto požiadavky sú veľmi dôležité pri analýze.
  • min_examined_row_limit - označuje minimálnu hodnotu počtu dátových sérií na analýzu. Hodnota 1000 ignoruje požiadavky, ktoré sa vracia menej ako 1000 riadkov hodnôt.

Tieto premenné môžete nastaviť v konfiguračnom súbore MySQL, dynamicky cez MySQL GUI alebo príkazový riadok Mysql. Ak sú premenné uvedené v konfiguračnom súbore, server ich nainštaluje na nasledujúcom spustení. Zvyčajne sa tento súbor nachádza na / atď, / usr, /etc/my.cnf alebo /etc/mysql/my.cnf. Tu je konfiguračné vyhľadávacie súbory (niekedy by ste mali rozšíriť vyhľadávanie ďalších root adresárov):

Nájsť / etc -name my.cnf nájsť / usr -name my.cnf

Keď nájdete súbor, pridajte požadované premenné v sekcii:

; \\ T ... Slow-Query-Log \u003d 1 Slow-Query-Log-File \u003d /Var/log/MYSQL/LOCALHOST-SLOW.LOG LONG_QUERY_TIME \u003d 1 LOG-queries-Not-Neeping-indexy; Neexistuje žiadna hodnota

Zmeny sa uskutočnia len na nasledujúcom spustení MySQL, ak potrebujete dynamickú zmenu parametrov, použite iné metódy variabilných inštalácií:

MySQL\u003e Nastavte globálne Slow_query_log \u003d "ON"; MySQL\u003e Nastaviť globálne SLOW_QUERY_LOG_FILE \u003d "/VAR/LOG/MYSQL/LOCALHOST-SLOW.LOG"; MySQL\u003e Nastavte globálne log_queries_NOT_USE_INDEXES \u003d "ON"; MySQL\u003e Set Result Long_Query_Time \u003d 1; MySQL\u003e Nastaviť reláciu Min_examined_ROW_LIMIT \u003d 100;

Skontrolujte, či hodnoty premenných môžu byť nasledovné:

MySQL\u003e Zobraziť globálne premenné ako "SLOW_QUERY_LOG"; MySQL\u003e Zobraziť premenné relácie ako "Long_query_time";

Hlavnou nevýhodou dynamickej inštalácie - hodnoty sa stratia pri spustení systému. Odporúča sa uviesť dôležité parametre V MYSQL CONFIGU.

Poznámka: Syntax nastavení dynamických nastavení prostredníctvom príkazu SET a pomocou používania konfiguračný súbor Mierne sa líši, napríklad Slow_Query_log / Slow-Query-Log. V úradnej dokumentácii DBMS nájdete Úplný popis Syntax. Option-Formát súboru sa používa pre konfiguračný súbor, systémový názov premennej - variabilné názvy, keď dynamicky nastavené hodnoty.

Generovanie údajov pre profilovanie požiadaviek

Prehodnotili sme hlavné položky konfigurácie profilovania, teraz vytvoríte požiadavky, o ktoré máte záujem. Tento príklad bol použitý na serveri MySQL Server Beh predbežné nastavenia Log. Príklady požiadaviek môžu byť spustené prostredníctvom príkazov MySQL GUI a DBMS. Pri monitorovaní protokolu požiadavky na slotu sa často otvoria dva okná s pripojením: jeden na spustenie požiadaviek, ďalšie - zobrazenie denníka.

$\u003e MySQL -U -U -P MYSQL\u003e Vytvorenie databázového profilu_samling; MySQL\u003e Použite profil_samling; MySQL\u003e Vytvorenie užívateľov tabuľky (ID TinyTint primárny kľúč AUTO_InCrement, názov VARCHAR (255)); MySQL\u003e Vložte hodnoty používateľov (názov) ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie") "Saul"), ("Gustavo"), ("Hector"), ("Mike"); MySQL\u003e Nastavte globálne SLOW_QUYERY_LOG \u003d 1; MySQL\u003e Nastaviť globálne SLOW_QUERY_LOG_FILE \u003d "/VAR/LOG/MYSQL/LOCALHOST-SLOW.LOG"; MySQL\u003e Nastaviť globálne log_queries_not_Using_indexes \u003d 1; MySQL\u003e Set Long_query_Time \u003d 10; MYSQL\u003e SET MIN_EXAMINED_ROW_LIMIT \u003d 0;

Teraz máme databázu s testovacími údajmi. Spustili sme profilovanie, ale čas odozvy a počet riadkov, ktoré sme špecificky inštalovali malé. Ak chcete zobraziť protokol, použite tím:

CD / VAR / LOG / MYSQL LS -L

Podľa myšlienky by súbor denníka ešte nemal existovať, pretože sme nevykonali žiadosti o databázu. Ak existuje, to znamená, že profilovanie bolo nakonfigurované skôr, čo môže skresliť výsledky príkladu. Vykonajte v konzole:

MySQL\u003e Použite profil_samling; MySQL\u003e Vyberte * od užívateľov, kde ID \u003d 1;

Naša požiadavka používa primárny kľúčový index z tabuľky. Žiadosť pracovala veľmi rýchlo pomocou indexu, takže v log by sa nemalo odrážať. Upozorňujeme, že súbor denníka by nemal byť vytvorený.

Teraz urobte nasledovné:

MySQL\u003e Select * od používateľov, kde názov \u003d "Jesse";

Tu sme nepoužili indexy. Teraz musíme vidieť tento dotaz v denníku:

Sudo cat /var/log/mysql/localhost-slow.log # Čas: 140322 13:54:58 # [Chránené e-mail]: root @ localhost # Query_Time: 0.000303 Lock_time: 0.000090 ROWS_SENT: 1 ROWS_EXAMINED: 10 Použite profil_sampling; Nastavená časová značka \u003d 1395521698; Vyberte * od užívateľov, kde meno \u003d "Jesse";

Zvážte ďalší príklad. Zvýšiť počet riadkov v reakcii a postupujte podľa nasledujúcej požiadavky:

MYSQL\u003e SET MIN_EXAMINED_ROW_LIMIT \u003d 100; MySQL\u003e Select * od užívateľov, kde meno \u003d "walter";

Žiadosť nebude mať vplyv na log, pretože sme nepresiali 100 riadkov v reakcii na žiadosť.

Poznámka: Ak sa údaje nezobrazujú v protokole, potom prvá potreba zvážiť nasledujúce faktory. Prvým je doprava do adresára, kde je súbor denníka uložený. Skupina a užívateľ sa musia zhodovať s MySQLD užívateľovi, práva musia byť - chmod 755. Druhý - je možné profilovať, že bola predtým nakonfigurovaná. Odstrániť všetko existujúce hodnoty Profilovanie premenných z konfiguračného súboru a reštartujte server alebo nastavte premenné dynamicky. Ak ste použili dynamická metóda, vyjdeš a vrátite sa späť do konzoly MySQL.

Analýza dát profilovania dotazu

Zvážte vyššie uvedený príklad:

# Čas: 140322 13:54:58 # [Chránené e-mail]: root @ localhost # Query_Time: 0.000303 Lock_time: 0.000090 ROWS_SENT: 1 ROWS_EXAMINED: 10 Použite profil_sampling; Nastavená časová značka \u003d 1395521698; Vyberte * od užívateľov, kde meno \u003d "Jesse";

Tu vidíme:

  • Čas, kedy bola žiadosť spustená
  • Používateľ, ktorý požiadavku vykonal
  • Otváracie hodiny
  • Trvanie uzamknutia
  • Počet vybraných reťazcov
  • Počet analyzovaného reťazca

Tieto údaje sú veľmi užitočné, pretože s ich pomocou môžeme nájsť a odstrániť príčinu spomalenia systému. Aj vývojár alebo administrátor MySQL môže vždy vidieť žiadosti o problém a rád by si všimli, že ich nájdu oveľa rýchlejšie ako štúdium kódovací kód Aplikácií. S dlhým profilovaním môžete sledovať podmienky prevádzky pri nízkej rýchlosti.

Použitie MySQLDUMPPSLOW

Záznam neustále zaznamenáva údaje, spravidla to píše oveľa viac, než si z neho čítal. S veľkou veľkosťou protokolu sa stane problematickým čítaním. MySQL obsahuje nástroj MySQLDUMPLOW, ktorý pomáha udržiavať integritu denníka. Samotný program je kombinovaný s MySQL (na systémoch Linux). Ak chcete použiť, vykonajte potrebný príkaz a odovzdajte cestu k súboru denníka:

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

Na konfiguráciu výstupu príkazu je niekoľko parametrov. V nasledujúcom príklade uvidíme posledných päť požiadaviek zoradených podľa stredná doba trvania. Výsledkom je, že čítanie denníka sa stáva oveľa pohodlnejším. (Výstup sa zmení na zobrazenie skutočných hodnôt v protokole):

Počet: 2 Čas \u003d 68,34s (136s) Zámok \u003d 0.00s (0S) ROY \u003d 39892974.5 (79785949), [Chránené e-mail] Vyberte PL.PL_TITLE, P.PAGE_TITLE z PAG INNEROBY COOPLOUNDAGEPLIKUS PL na pl.pl_namEspace \u003d p.page_nampace \u003d n ...

Čo vidíme, sú:

  • Počet - počet požiadaviek v protokole
  • Čas - priemerný a celkový čas dotazu
  • Zámok - čas uzamknutia tabuľky
  • Riadky - Počet vybraných riadkov

Príkaz eliminuje číselné a reťazové údaje o požiadavke, to znamená, že dotazy s tým isté, kde bude podmienka považovaná za rovnakú. Vďaka tomuto nástroju nemusíte neustále prehľadávať protokol. Kvôli veľké číslo Príkazové parametre, môžete vyriešiť výstup, pretože je pre vás vhodné. Existuje aj vývoj vývojárov tretích strán S podobnou funkčnosťou, ako je napríklad pt-dotaz.

Požiadavky na ovládač

Malo by sa vyplatiť iným nástrojom, ktorý vám umožní prelomiť komplexné dotazy. Najčastejšie musíte urobiť žiadosť z protokolu a potom ju spustiť priamo v konzole MySQL. Najprv musíte zapnúť profilovanie a potom vykonať dotaz:

MYSQL\u003e Nastaviť profilovanie relácie \u003d 1; MySQL\u003e Použite profil_samling; MySQL\u003e Select * od používateľov, kde názov \u003d "Jesse"; MySQL\u003e Zobraziť profily;

Po zapnutí profilovania sa zobrazia profily zobrazujú viazanie tabuľky query_ID a expresiu SQL. Nájdite zodpovedajúce QUERY_ID a postupujte podľa nasledujúcej požiadavky (nahradiť # do vášho Query_ID):

MySQL\u003e Select * z informácií_schema.profilovanie, kde Query_id \u003d #;

Príklad výstupu:

SEQ State Trvanie 1 Spustenie 0,000046 2 Povolenia na kontrolu 0,000005 3 Otváracie stoly 0,000036

Štát - krok v procese vykonávania dotazu, Trvanie - Start Trvanie v priebehu niekoľkých sekúnd. Tento nástroj nie je tak často používaný, ale niekedy to môže byť veľmi užitočné pri určovaní dôvodu zníženia rýchlosti žiadosti.

Podrobný popis stĺpca:

Podrobný opis krokov:

Poznámka: Tento nástroj by sa nemal používať v prevádzkovom režime servera s výnimkou analýzy špecifických dotazov.

Rýchlosť rýchlosti rýchlosti

Poslednou otázkou je, ako je profilovanie ovplyvnené rýchlosťou servera ako celku. V režime produktu servera je možné bezpečne používať takéto ťažbu, nemalo by to ovplyvniť CPU na I / O. Napriek tomu stojí za to platiť pozornosť veľkosti protokolového súboru, nemala by sa stať neúmerne veľká. Tiež zo skúseností by som chcel poznamenať, že nastavenie hodnoty premennej Long_query_time približne 1 sekundu a vyššie.

Dôležitý: Nemali by ste použiť profilovací nástroj - Nastaviť profilovanie \u003d 1 - na zaznamenávanie všetkých požiadaviek, t.j. Premenná všeobecne_log v produkte a pri veľkých zaťaženia sa neodporúča používať.

Záver

Profilovanie dotazu vám môže veľmi pomôcť pri zdôrazňovaní žiadosti o problém av celkovom hodnotení výkonnosti. Developer môže tiež preskúmať, ako požiada o prácu MySQL jeho aplikácie. Nástroj MySQLDUMPSLOW pomáha zobraziť a spracovať protokol požiadavky. Po definovaní požiadaviek na problémoch, budete ich musieť nakonfigurovať pre maximálny výkon.

Profilovanie MySQL dotazu je užitočná metóda pre analýzu celkového výkonu aplikácií založených na databáze. Pri vývoji stredných a veľkých aplikácií sú spravidla stovky požiadaviek distribuované na veľkú kódovú základňu a databázu spracováva mnoho požiadaviek za sekundu. Bez profilovania sa stáva veľmi ťažko určiť zistenie a dôvody pre výskyt úzkych aplikácií. Niektoré užitočné metódy profilovania dotazu sú opísané v tomto návode pomocou vstavaných nástrojov MySQL.

MySQL pomalé dotazy

MySQL Slow Požiadať o log (alebo pomalý dopytový protokol) je log, v ktorom MySQL pošle pomalé a potenciálne požiadavky na problém.

Táto funkcia je dodávaná s MySQL, ale predvolené je vypnuté. MySQL určuje, ktoré požiadavky, ktoré sa majú pridať k tomuto protokolu pomocou špeciálnych premenných, ktoré vám umožňujú profil žiadosti na základe požiadaviek výkonnosti aplikácií. Typicky sa do tohto protokolu urobia dotazy, ktorých spracovanie trvá viac času a dotazov, ktoré sú nesprávnymi indexmi.

Variabilné profilovanie

Základné premenné servera na konfiguráciu protokolu pomalých požiadaviek MySQL sú:

sLOW_QUERY_LOG GLOBAL
SLOW_QUERY_LOG_FILE GLOBAL
Long_query_time Global / Session
log_queries_not_Using_indexes Global
min_examined_row_limit global / sesssional

sLOW_QUERY_LOG je logická premenná na zapnutie a vypnutie pomalých požiadaviek.

sLOW_QUERY_LOG_FILE je absolútna cesta súboru denníka dotazu. Adresár súborov musí patriť do používateľa MySQLD a mať vhodné práva na čítanie a písanie. MySQL démon bude s najväčšou pravdepodobnosťou spustený ako MySQL, ale aby ste sa uistili, že spustíte príkaz v termináli Linux:

ps -ef | Grep Bin / MySQLD | Cut -d "" -f1

Výstup zobrazí aktuálny používateľ a MySQLD.

cD / var / log
mkdir mysql
CHMOD 755 MYSQL
Nosný MySQL: MySQL MYSQL

  • long_query_time - čas v sekundách, aby ste skontrolovali dĺžku dotazu. Ak 5 v denníku zaregistruje všetky požiadavky, ktorých spracovanie trvá viac ako 5 sekúnd.
  • lOG_QUEERSE_NOT_USE_INDEXES - logická hodnota, ktorá určuje, či potrebujete registráciu požiadaviek, ktoré nepoužívajú indexy. Pri analýze sú takéto požiadavky dôležité.
  • min_examined_row_limit - definuje minimálny počet riadkov na analýzu. S hodnotou 1000, všetky požiadavky, ktoré sa analyzovať menej ako 1000 riadkov, budú ignorované.

MySQL Server Premenné môžu byť nainštalované v konfiguračnom súbore MySQL alebo dynamicky pomocou užívateľské rozhranie alebo príkazový riadok MySQL. Ak sú premenné nainštalované v konfiguračnom súbore, budú uložené, keď sa server reštartuje, ale ak chcete aktivovať, musíte reštartovať server. Konfiguračný súbor MySQL je zvyčajne v /etc/my.cnf alebo /etc/mysql/my.cnf. Ak chcete nájsť konfiguračný súbor, zadajte (možno musíte rozšíriť vyhľadávanie ďalších koreňových adresárov):

nájsť / etc -name my.cnf
Nájsť / usr -name my.cnf

Pošlite konfiguračný súbor, pridajte požadované premenné do časti:


….
Slow-Query-Log \u003d 1
Slow-Query-Log-File \u003d /Var/log/MYSQL/LOCALHOST-SLOG.LOG
Long_query_Time \u003d 1.
Log-Queries-Not-Needing-indexy

Ak chcete zmeniť zmeny, musíte server reštartovať. Ak musia byť zmeny okamžite aktivované, dynamicky nastaviť premenné:

mySQL\u003e Nastavte globálne Slow_query_log \u003d "ON";
MySQL\u003e Nastaviť globálne SLOW_QUERY_LOG_FILE \u003d "/VAR/LOG/MYSQL/LOCALHOST-SLOW.LOG";
MySQL\u003e Nastavte globálne log_queries_NOT_USE_INDEXES \u003d "ON";
MySQL\u003e Set Result Long_Query_Time \u003d 1;
MySQL\u003e Nastaviť reláciu Min_examined_ROW_LIMIT \u003d 100;

Kontrola hodnôt premenných:

mySQL\u003e Zobraziť globálne premenné ako "SLOW_QUERY_LOG";
MySQL\u003e Zobraziť premenné relácie ako "Long_query_time";

Jedným z nedostatkov dynamickej zmeny premenných MySQL je, že premenné sa stratia, keď sa server reštartuje. Preto by sa mali do spisu pridať všetky dôležité premenné, ktoré musia byť uložené.

Požiadajte o generovanie na profilovanie

Teraz ste oboznámení s nastaveniami protokolov pomalých požiadaviek. Snažte sa generovať údaje o požiadavkách na profilovanie.

Poznámka: Príklad je uvedený na spustenej inštancii MySQL bez nakonfigurovaného protokolu pomalých požiadaviek. Tieto testovacie dotazy môžu byť vykonané prostredníctvom grafické rozhranie alebo príkazový riadok MySQL.

Pri monitorovaní pomalého denníka dotazu je užitočné otvoriť dva terminálové okná: jedno pripojenie na odosielanie operátorov MySQL a druhý pre zobrazenie protokolu požiadavky.

Ísť do server MySQL Používanie konzoly ako používateľa s oprávneniami Super Admin. Ak chcete začať, vytvorte testovaciu databázu a tabuľku, pridajte k nemu fiktívne údaje a zapnite protokol žiadosti o slotu.

Poznámka: V ideálnom prípade je tento príklad lepšie vykonať v médiu bez akýchkoľvek iných aplikácií pomocou MySQL, aby sa zabránilo prepusteniu protokolu požiadavky.

$\u003e MYSQL -U -P
mySQL\u003e Vytvorenie databázového profilu_samling;

MySQL\u003e Použite profil_samling;


MySQL\u003e Vytvorenie užívateľov tabuľky (ID TinyTint primárny kľúč AUTO_InCrement, názov VARCHAR (255));


MySQL\u003e Vložte hodnoty používateľov (názov) ("Walter"), ("Skyler"), ("Jesse"), ("Hank"), ("Walter Jr."), ("Marie") "Saul"), ("Gustavo"), ("Hector"), ("Mike");


MySQL\u003e Nastavte globálne SLOW_QUYERY_LOG \u003d 1;


MySQL\u003e Nastaviť globálne SLOW_QUERY_LOG_FILE \u003d "/VAR/LOG/MYSQL/LOCALHOST-SLOW.LOG";


MySQL\u003e Nastaviť globálne log_queries_not_Using_indexes \u003d 1;


MySQL\u003e Set Long_query_Time \u003d 10;


MYSQL\u003e SET MIN_EXAMINED_ROW_LIMIT \u003d 0;

Teraz máte testovaciu databázu a stôl malé množstvo údajov. Zahrnuté sú pomalé požiadavky. Sme zámerne nainštalovaný vysoký čas Žiadosť o spracovanie a odpojenie kontrola počtu riadkov. Ak chcete zobraziť protokol, zadajte:

cD / VAR / LOG / MYSQL
Ls -l

Zatiaľ v priečinku by nemal byť logom pomalých požiadaviek, pretože tento moment Neboli žiadne žiadosti. Ak je takýto denník už tam, znamená to, že databáza už narazila na pomalé požiadavky, pretože ste zaradili podporu pre denník pomalých požiadaviek. To môže skresliť výsledky tohto príkladu. Vráťte sa na kartu MySQL a spustite:

mySQL\u003e Použite profil_samling;
MySQL\u003e Vyberte * od užívateľov, kde ID \u003d 1;

Vykonaná požiadavka jednoducho načíta údaje a používa prvý kľúčový index z tabuľky. Táto požiadavka bola rýchla a použila index, takže nie je registrovaný v protokole žiadosti o službu. Návrat do adresára a uistite sa, že protokol požiadavky nebol vytvorený. Teraz sa vráťte do okna MySQL a spustite:

mySQL\u003e

Tento dotaz nepoužíva index. Teraz v /var/log/mysql/localhost-slow.log log, približne takýto záznam by sa mal objaviť:

# Čas: 140322 13:54:58

Použite profil_sampling;
Nastavená časová značka \u003d 1395521698;

Ešte jeden príklad. Zvýšte minimálny počet riadkov na analýzu a odoslať takúto požiadavku:

mYSQL\u003e SET MIN_EXAMINED_ROW_LIMIT \u003d 100;
MySQL\u003e Select * od užívateľov, kde meno \u003d "walter";

Údaje sa k protokolu nepridajú, pretože pri žiadaní bolo analyzovaných menej ako 100 riadkov.

Poznámka: Ak údaje neboli pridané do denníka, musíte skontrolovať niekoľko faktorov. Najprv skontrolujte práva adresárov, v ktorých sa vytvorí protokol. Mala by patriť do užívateľa / skupiny MySQLD a mať oprávnenia CHMOD 755. Potom by ste mali skontrolovať, či neexistujú žiadne pomalé požiadavky na serveri, ktorý prepíše vaše parametre. Resetujte predvolené hodnoty na odstránenie všetkých premenných pomalých dotazov z konfiguračného súboru a reštartujte server. Môžete tiež dynamicky nastaviť globálne premenné na svoje štandardné hodnoty. Ak urobíte zmeny dynamicky, opustíte systém a prihláste sa do MySQL na aktualizáciu parametrov.

Žiadosť o analýzu profilovania údajov

Zvážte takéto údaje:

# Čas: 140322 13:54:58
# [Chránené e-mail]: root @ localhost
# Query_Time: 0.000303 Lock_Time: 0.000090 ROWS_SENT: 1 ROWS_EXAMINED: 10
Použite profil_sampling;
Nastavená časová značka \u003d 1395521698;
Vyberte * od užívateľov, kde meno \u003d "Jesse";

Tento vstup zobrazuje:

  • Požadovať čas vykonania
  • Ktorý ho poslal
  • Ako dlho bola žiadosť spracovaná
  • Dĺžka
  • Koľko riadkov bolo vrátených
  • Koľko riadkov bolo analyzovaných

To je užitočné, pretože akúkoľvek žiadosť, ktorá porušuje požiadavky na výkon uvedené v premenných spadá do denníka. To umožňuje vývojárovi alebo správcovi rýchlo monitorovať nepracovné požiadavky. Okrem toho vám údaje o profilovaní požiadavky pomôžu určiť, ktoré okolnosti znižujú výkonnosť aplikácií.

Použitie MySQLDUMPPSLOW

Profilovanie môže byť zahrnuté do aplikácií založených na BD, aby poskytli mierny dátový tok.

Ako sa zvýši veľkosť záznamu, je ťažké rozobrať všetky údaje a požiadavky na problém sa v ňom ľahko stratili. MySQL ponúka nástroj MySQldumplow, ktorý pomáha vyhnúť tomuto problému oddelením spoločnosti pomalých požiadaviek. Binárny súbor je spojený s MySQL (v Linuxe), takže môžete jednoducho spustiť príkaz:

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

Ak chcete konfigurovať výstup, príkaz môže prijímať rôzne parametre. Vo vyššie uvedenom príklade sa zobrazí prvých 5 požiadaviek zo stredu času dotazu. Takéto čiary sú čitateľnejšie, ako aj zoskupené na požiadanie.

Počet: 2 Čas \u003d 68,34s (136s) Zámok \u003d 0.00s (0S) ROY \u003d 39892974.5 (79785949), [Chránené e-mail]
Vyberte PL.PL_TITLE, P.PAGE_TITLE
Zo strany P.
Vnútorné pripojenie pagelinks pl
Na pl.pl_nampace \u003d p.page_nampace
Kde p .page_nampace \u003d n

Výstup odráža takéto údaje:

  • Počet: Koľkokrát sa žiadosť dostala do denníka.
  • Čas: Priemerný a celkový čas dotazu (v zátvorkách).
  • Zámok: Čas blokovania tabuľky.
  • Riadky: Počet vrátených riadkov.

Príkaz eliminuje číselné a reťazce hodnoty, pretože rovnaké požiadavky s rôznymi podmienkami sú vnímané ako rovnaké. MySQLDUMPLOW nástroj eliminuje potrebu neustáleho zobrazenia protokolu pomalých požiadaviek, ktoré vám umožní vykonávať pravidelné automatické kontroly. Parametre príkazov MySQLDUMPSLOW vám umožňujú vykonávať komplexné výrazy.

Požiadavky na ovládač

Ďalším profilovaním, o ktorom by ste si mali pripomenúť, je nástroj pre komplexné členenie požiadaviek. To vám umožní identifikovať požiadavky na problém v pomalom dotazníku a spustiť ho v MySQL. Po prvé, musíte povoliť profilovanie a potom vykonať dotaz:

mYSQL\u003e Nastaviť profilovanie relácie \u003d 1;
MySQL\u003e Použite profil_samling;
MySQL\u003e Select * od používateľov, kde názov \u003d "Jesse";
MySQL\u003e Zobraziť profily;

Po zapnutí sa zobrazia profily zobrazí tabuľku, ktorá viaže Query_ID s výrazom SQL. Nájsť Query_ID, ktorý spĺňa začiatok dotazu a spustite nasledujúcu požiadavku (nahradiť # svoj query_id):

mySQL\u003e Select * z informácií_schema.profilovanie, kde Query_id \u003d #;

Tím vráti tabuľku:

SEQ. Štát Trvanie
1 Štart. 0.000046
2 kontrola povolení 0.000005
3 otváracie stoly 0.000036

Štát je krokom v procese vykonávania dotazu a trvanie je čas potrebný na dokončenie tohto kroku v sekundách. Nie je to tak užitočný nástrojMôže však pomôcť určiť, ktorá časť vykonávania dotazu spôsobuje najväčšie oneskorenie.

Poznámka: Tento nástroj by sa nemal používať vo výrobnom prostredí.

Aktuálna ponuka Prihlásiť sa

Zostáva len zistiť, ako vplyv pomalých požiadaviek ovplyvňuje produktivitu. Všeobecne platí, že spustiť protokol pomalých dotazov vo výrobnom prostredí je bezpečný; Ani CPU, ani I / O mali trpieť. Mali by ste však mať stratégiu na monitorovanie veľkosti protokolu, aby bol protokol príliš veľký systém súborov. Okrem toho, pri spustení spoločnosti pomalých požiadaviek vo výrobnom prostredí, nastavte hodnotu Long_query_time 1 alebo vyššia.

Záver

Denník pomalých požiadaviek môže pomôcť identifikovať požiadavky na problém a hodnotiť celkový výkon žiadostí. Zároveň môže developer získať podrobnú predstavu o tom, ako sa v aplikácii vykonajú dotazy MySQL. Nástroj MySQLDUMPSLOW vám umožňuje ovládať protokoly pomalých požiadaviek a ľahko ich zahrnúť do procesu vývoja. Rozhodovanie žiadostí o problémoch, môžete optimalizovať spracovanie žiadostí o zvýšenie produktivity.

Tagy:

Koncepcia

Server logs (server log, denník servera) - FALS uložené na serveri, ktoré obsahujú informácie o systémových informáciách, ako aj logo všetky možné údaje o návštevnosti webového zdroja.

Denníky používajú správcovia systému na analýzu návštevníkov., Študovať vzory správania niektorých skupín užívateľov, ako aj prijímanie rôznych informácií o nich, ako napríklad: použitý prehliadač, IP adresu, údaje o geografickej polohe klienta a oveľa viac. Týmto spôsobom sa môžete dozvedieť o neoprávnenom prístupe na stránku, presnejšie, aby ste zistili, kto presne bol vyrobený, a vyjadriť údaje o tomto prípade príslušným orgánom.

Údaje v protokolovom súbore, vo svojej čistej forme, nebude jasné obyčajným používateľom, ktorí budú videní vo všetkých z nich len sada znakov v nezrozumiteľnej objednávke. Ale pre správcovia systému a webových vývojárov, je to celkom čitateľný text a pekné užitočná informácia.


Postupy udalostí

S každým prístupom klienta k webovému zdroju sa okamžite spustí niekoľko udalostí, ktorých postupujeme.

1. Žiadosť stránky. Pri zadávaní adresy v riadku prehliadača, alebo keď idete na aktívny webový odkaz, povedzme zo stránky výsledky vyhľadávaniaPrehliadač vyhľadáva a pripojte sa k serveru, na ktorom sa stránka nachádza, a implementuje svoju požiadavku. Zároveň prenáša tieto informácie na server:
- IP adresa počítača klienta, ktorý požaduje stránku (v prípade použitia proxy servera, adresa IP vášho proxy);
- adresa požadovaná užívateľom internetovej stránky (adresa IP);
- presný čas a dátum, kedy bola vykonaná žiadosť;
- údaje o aktuálnej polohe klienta (ak sa používa proxy server, potom skutočná adresa proxy);
- informácie o prehliadači používané klientom (meno, verzia atď.);
- údaje na webovej stránke, s ktorým bol vykonaný prechod klienta.

2. Prevod požadovaných údajov. Prenos požadovaných údajov sa vyskytuje (internetová stránka, súbory, súbory cooki atď.) Od servera do počítača používateľa.

3. Nahrávanie do denníka servera. Koniec koncov, denník je zaznamenaný, ktorý označuje všetky údaje, ktoré sa objavili v minulých dvoch udalostiach. Toto sú všetky informácie zaslané v prvom odseku, ako aj informácie o vysielaných údajoch.

Ako vidieť protokoly serverov

Protokolové súbory uložené v súbore prístup.log. Bez ohľadu na to, ako typ webového servera, ktorý používate (Apache, Nginx, Squid Proxy server atď.) Tento súbor Je to textový dokument, na každom riadku, ktorý je zaznamenaný jedným manipuláciou. Formáty nahrávania B. Prístup.log. dosť veľa, ale najobľúbenejšie je kombinované, v ktorom má nahrávka nasledujúci formulár a postupnosť:

Kód:% H% L% U% T "% R \\"%\u003e S% B "% (referer) I"% "% (užívateľsky agent) I
Kde:

% H. - adresa hostiteľa / IP, z ktorej bola žiadosť podaná;
% T. - Žiadosť o server a časový pásový server;
% R. - verzia, obsah a typ dotazu;
% S. - štátny kód HTTP;
% B. - počet bajtov obsluhovaných serverom;
% (Referer) - zdroj URL dotazov;
% (Používateľský agent) - názov http, s požiadavkovými informáciami (aplikácia klienta, jazyk atď.);
% (HOSTITEĽ) - názov virtuálneho hostiteľa, ku ktorému existuje odvolanie.

v hotovom videu tento riadok Má o nasledujúcom type:

127.0.0.1 - "get /index.php http / 1..0 (kompatibilný; msie 7.0; Windows NT 5.1)"

Pre čítanie protokolov v manuáli bude trvať dosť času a silu. Preto skúsení webmasteri používajú špeciálny softvér, ktorý volajte "protokolové súbory". Analyzujú všetky údaje, ktoré sú dosť zložité čítať osobou a vydávajú štruktúrované údaje. Toto sú také programy ako: Analógový, Webanalizer, Webalizer, Awstats, WebTrends atď. Špeciálne druhy softvér dosť veľa, medzi nimi je ako platené programya zadarmo. Preto som si istý, že každý nájde niečo také.

Kde nájsť protokoly stránok

Ak máte obyčajný hosting, budete s najväčšou pravdepodobnosťou musíte napísať svojmu hostiteľovi a požiadajte o protokoly. Rovnako často ich môžete požiadať prostredníctvom panela Hoster. V rôznych hostiteľoch - rôznymi spôsobmi. Napríklad, na vyžiadanie môjho hlásenia, stačí, aby jeden klikli hlavná stránka Panely:


Ak máte prístup systémové priečinky Servery, môžete nájsť protokoly / atď / httpd / logs / Access_log V 99 prípadoch zo 100.

Chyba prihlásenia chybovosti.

ERROR.LOG. - Súbor, v ktorom prebiehajú protokoly. Ale nie návštevníci, ale vznikajú na chybách servera. Ako v prípade prístup.log.Každý riadok súborov je zodpovedný za jednu chybu. Záznam sa vykonáva s prihliadnutím na takéto informácie ako: presný dátum a čas výskytu chýb, IP adresa, ktorej bola vydaná chyba, typ chyby, ako aj dôvod jeho výskytu.

Záver

Denníky sú pomerne silný a informatívny nástroj, s ktorým je potrebné pracovať. Ale v našom čase sú nahradené takýmito nástrojmi, ako je Yandex.Metrica, Google Analytics atď., A tým zjednodušuje náš život. Ak však plánujete rozvíjať, rastú a viete niečo nové, nepochybne vám odporučiť, aby ste sa zoznámili s touto témou bližšie.

Logy udalostí sú prvým a najjednoduchším nástrojom na určenie stavu systému a identifikáciu chýb. Hlavné protokoly v štyroch MySQL:

  • Chybový denník. - štandardné protokoly chýb, ktoré sa zhromažďujú počas prevádzky servera (vrátane štartu a zastavenia);
  • Binárny denník. - Na replikáciu a zálohovanie sú potrebné log všetkých príkazov zmeny BD;
  • Všeobecný denník dotazu. - Hlavný denník žiadostí;
  • Pomalý denník dotazov. - denník pomalých požiadaviek.

Chyba protokolu

Tento časopis obsahuje všetky chyby, ku ktorým došlo počas operácie servera, vrátane kritických chýb, ako aj zastavenie, umožňujú servery a varovania (upozornenia). Musíte začať v prípade zlyhania systému. V predvolenom nastavení sú všetky chyby zobrazené v konzole (Stderr), môžete tiež nahrávať chyby v Syslog (predvolené v Debian) alebo samostatný súbor denníka:

LOG_ERROR \u003d / VAR / LOG / MYSQL / MYSQL_ERROR.LOG

# Chyby budú napísané v mysql_error.log

Odporúčame udržať tento časopis povolený rýchlo definovať chyby. A pochopiť, čo je chyba, ktorá znamená, že jeden alebo druhý je nástroj Perror prítomný v MySQL:

Shell\u003e Perror 13 64 OS Chyba Chyba 13: Povolenie Odmietnuté OS Chyba Chyba 64: Stroj nie je v sieti

# Vysvetľuje hodnoty chybových kódov

Binárne (jeden binárny) protokol

Všetky príkazy na zmenu databázy sú zaznamenané v binárnom denníku, je to užitočné replikácia a obnovy.

Zapnite toto:

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

# Označuje umiestnenie, životný život a maximálna veľkosť Spis

Všimnite si, že ak nebudete merať systém a implementovať toleranciu na poruchu, potom binárny denník nie je zahrnúť. Je to náročné na zdroje a znižuje výkon systému.

Žiadosti o protokol

Tento denník obsahuje všetky prijaté dotazy SQL, informácie o pripojení klienta. Môže byť užitočné na analýzu indexov a optimalizácie, ako aj identifikáciu chybných požiadaviek:

General_log_file \u003d /Var/log/MYSQL/MYSQL.LOG. general_log \u003d 1.

# Zapne protokol a označuje umiestnenie súboru

Môžete tiež povoliť / zakázať počas prevádzky servera MySQL:

Nastaviť globálne všeobecné_log \u003d "na"; Nastaviť globálne všeobecné_log \u003d "off";

# Pre použitie Nemusíte reštartovať server

Denník pomalých požiadaviek

Časopis je užitočný na určenie pomalého, to znamená, že neefektívne požiadavky. Čítaj viac tento článok.

Zobraziť protokoly

Ak chcete zobraziť protokoly na Debian (Ubuntu), musíte vykonať:

# Log chyby chvost -f / var / log / syslog # chvost -f /var/log/mysql/mysql.log # Log pomalé požiadavkychvost -f /var/log/mysql/mysql-slow.log.

# Ak nie sú protokoly špecifikované samostatne, potom ste v / var / lib / mysql

Rotácia protokolov

Nezabudnite komprimovať (archív, rotačné) protokolové súbory tak, aby zaberali menej miesta na serveri. Ak to chcete urobiť, použite nástroj lOGROTÁT.Úpravou konfiguračného súboru /etc/logratate.d/mysql-server:

# - Vložil som všetko do jedného bloku a pridal Shardenscripts, takže MySQL dostane # Flush-Logs "D len raz. # INÉ BINOVÉ LOGY by sa automaticky zvýšili o n-krát každý deň. # - Chybové protokol je zastarané, správy idú na syslog./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log. (Denné Rotate 7 MiscyKOK Vytvoriť 640 MYSQL ADM COMPISH SHEAREDScripts Postrotát Test -X / usr / bin / MySQladmin || Ukončiť 0 # Ak to zlyhá, skontrolujte Debian.conf! Myadmin \u003d "/ usr / bin / mysqladmin -defaults-file \u003d / etc / mysql / debian.cnf" ak [-z "` $ myadmin ping 2\u003e / dev / null` "]; Potom. # Naozaj nie MySQLD alebo skôr chýbajúci užívateľ Debian-sys-main? # Ak k tomu dôjde, a nie je chyba, oznámte si chybu. #IF PS CAX | grep -q mysqld; Potom. Ak Killall -Q -s0 -umysql mysqld; Potom ukončite 1 fi inde $ myadmin flush-logs fi econscript)

# Komprimuje a archívu požadovaných protokolov, vymaže súbory

DDL log.

MySQL tiež vedie k angažovaniu dát. Drop_table a alter_table sa v ňom zhromažďujú. Denník sa používa na obnovenie zlyhania zlyhania, ku ktorým došlo pri vykonávaní takýchto operácií. DDL Log je binárny súbor, ktorý nie je určený pre používateľa, takže neupravujte a neodstraňujte ho.

Najdôležitejšia vec

Vždy zapnite protokol chýb, použite protokol s požiadavkou na kontrolu pripojenia aplikácie s databázou, kontrolmi a kontrolami práce. Prekĺznutie pomalých požiadaviek je užitočné na optimalizáciu práce MySQL.



Páči sa vám článok? Zdieľaj to