MySQL žurnalai apima: klaidų žurnalus, dvejetainius žurnalus, bendruosius užklausų žurnalus, lėtus užklausų žurnalus ir kt. Čia yra dvi dažniausiai naudojamos funkcijos: bendras užklausų žurnalas ir lėtas užklausų žurnalas.
1) Lėti užklausų žurnalai:Registruoti visas užklausas, kurios vykdomos ilgiau nei long_query_time sekundes arba nenaudoja indeksų
2) Bendras užklausų žurnalas:Įrašykite užmegztus ir įvykdytus klientų ryšius.
1: Apie MySQL lėtą užklausą:
"MySQL" lėtas užklausų žurnalas yra tam tikras "MySQL" teikiamas registravimas, kuris naudojamas įrašyti teiginius, kad atsakymo laikas viršija "MySQL" slenkstį, konkrečiai nurodant SQL, kurio veikimo laikas yra didesnis nei long_query_time reikšmė, kuris bus įrašytas į lėtą užklausų žurnalą (žurnalai gali būti įrašomi į failus ar duomenų bazių lenteles, jei našumo reikalavimai yra aukšti, rekomenduojama rašyti failus). Pagal numatytuosius nustatymus MySQL duomenų bazė neįgalina lėtų užklausų žurnalų, o numatytoji long_query_time reikšmė yra 10 (t. y. 10 sekundžių, paprastai nustatyta 1 sekundė), tai yra, teiginiai, kurie vykdomi ilgiau nei 10 sekundžių, yra lėti užklausos sakiniai.
Paprastai kalbant, lėtos užklausos vyksta didelėse lentelėse (pavyzdžiui, lentelėje yra milijonai duomenų), o užklausos sąlygų laukai nėra indeksuojami, šiuo metu laukai, atitinkantys užklausos sąlygas, bus nuskaitomi visoje lentelėje, todėl reikia laiko patikrinti long_query_time.
Tai lėtas užklausos teiginys.
Klausimas: Kaip patikrinti dabartinę lėtos užklausos žurnalo atidarymo būseną?
Įveskite komandą į MySQL:
Daugiausia įsisavinami šie parametrai:
(1) slow_query_log reikšmė yra ĮJUNGTA, kad įjungtumėte lėtą užklausų žurnalą, o IŠJUNGTA - išjungti lėtą užklausų žurnalą.
(2) slow_query_log_file reikšmė yra įrašytas lėtas užklausos žurnalas į failą (pastaba: numatytasis pavadinimas yra hostname.log, nesvarbu, ar lėtas užklausos žurnalas yra įrašytas į nurodytą failą, turite nurodyti lėtos užklausos išvesties žurnalo formatą kaip failą, o susijusi komanda yra: rodyti kintamuosius, pvz., '%log_output%'; , kad pamatytumėte išvesties formatą).
(3) long_query_time nurodo lėtos užklausos slenkstį, tai yra, jei vykdymo laikas viršija šią ribą, tai yra lėtas užklausos sakinys, o numatytoji reikšmė yra 10 sekundžių.
(4) log_queries_not_using_indexes Jei reikšmė nustatyta į ON, bus įrašytos visos užklausos, kurios nenaudoja indekso (Pastaba: jei log_queries_not_using_indexes nustatyta tik į ON, o slow_query_log nustatyta kaip OFF, nustatymas šiuo metu neįsigalios, tai yra, nustatymas įsigalios, jei slow_query_log reikšmė nustatyta į ON) , kuri paprastai laikinai įjungiama, kai sureguliuojamas našumas.
2. Bendras užklausų žurnalas
Jei general_log vertė yraĮJUNGTA įjungta,IŠJUNGTA uždaryta(Pagal numatytuosius nustatymus išjungta).
Patikrinkite dabartinės lėtos užklausos žurnalo išvesties formatą, kuris gali būti FILE (hostname.log, saugomas duomenų faile skaitmeninėje duomenų bazėje) arba TABLE (mysql.general_log saugomas duomenų bazėje)
(Pastaba: aukščiau pateikta komanda galioja tik dabartiniu metu, kai MySQL paleidimai iš naujo yra negaliojantys, jei norite, kad ji įsigaliotų visam laikui, turite sukonfigūruoti my.cnf)
Žurnalo išvesties atvaizdavimas yra toks:
my.cnf failas sukonfigūruotas taip:
general_log=1 #为1表示开启通用日志查询, reikšmė 0 rodo, kad bendroji žurnalo užklausa uždaryta
log_output=FILE,TABLE# Nustato bendrojo žurnalo išvesties formatą į failą ir lentelę
|