Mysql විමසුම් ලොගය අක්‍රිය කළ යුතුද? "සේවාදායක ලොග්" යනු කුමක්ද, සේවාදායක ලොග් බලන්නේ කෙසේද. MySQL හි මන්දගාමී විමසුම් ලොගයක් යනු කුමක්ද?

MySQL විමසුම් පැතිකඩ දත්ත සමුදාය පදනම් කරගත් යෙදුම්වල සමස්ත කාර්ය සාධනය විශ්ලේෂණය කිරීම සඳහා ප්‍රයෝජනවත් තාක්‍ෂණයකි. මධ්‍යම සිට විශාල යෙදුම් සංවර්ධනය කිරීමේදී, සාමාන්‍යයෙන් විශාල කේත පදනමක් හරහා විමසුම් සිය ගණනක් පැතිරී ඇති අතර දත්ත සමුදාය තත්පරයකට බොහෝ විමසුම් ක්‍රියාවට නංවයි. විමසුම් පැතිකඩකින් තොරව, සිදුවීමේ ස්ථානය සහ හේතු තීරණය කිරීම ඉතා අපහසු වේ අවහිරතාඅයදුම්පත්. මෙම නිබන්ධනය MySQL හි බිල්ට් මෙවලම් භාවිතයෙන් ප්‍රයෝජනවත් විමසුම් පැතිකඩ ක්‍රම කිහිපයක් විස්තර කරයි.

MySQL මන්දගාමී විමසුම් ලොගය

MySQL මන්දගාමී විමසුම් ලොගය (හෝ මන්දගාමී විමසුම් ලොගය) යනු MySQL මන්දගාමී සහ ගැටළුකාරී විමසුම් යවන ලඝු-සටහනකි.

මෙම විශේෂාංගය MySQL සමඟ එන නමුත් පෙරනිමියෙන් අක්‍රීය කර ඇත. යෙදුමේ කාර්ය සාධන අවශ්‍යතා මත පදනම්ව විමසුම පැතිකඩ කිරීමට ඔබට ඉඩ සලසන විශේෂ විචල්‍යයන් භාවිතයෙන් මෙම ලොගයට ඇතුළත් කළ යුතු විමසුම් MySQL තීරණය කරයි. සාමාන්‍යයෙන්, සැකසීමට වැඩි කාලයක් ගත වන විමසුම් සහ වැරදි දර්ශක ඇති විමසුම් මෙම ලොගයට ඇතුළත් කෙරේ.

පැතිකඩ විචල්යයන්

MySQL මන්දගාමී විමසුම් ලොගය වින්‍යාස කිරීම සඳහා මූලික සේවාදායක විචල්‍යයන් වන්නේ:

slow_query_log ගෝලීය
slow_query_log_file ගෝලීය
long_query_time ගෝලීය/සැසිය
log_queries_not_using_indexes ගෝලීය
min_examined_row_limit ගෝලීය/සැසිය

slow_query_log – මන්දගාමී විමසුම් ලොගය සක්‍රීය කිරීමට හෝ අක්‍රිය කිරීමට බූලියන් විචල්‍යයකි.

slow_query_log_file - විමසුම් ලොග් ගොනුවේ නිරපේක්ෂ මාර්ගය. ගොනු නාමාවලිය mysqld පරිශීලකයා සතු විය යුතු අතර සුදුසු කියවීමට සහ ලිවීමට අවසර තිබිය යුතුය. mysql deemon බොහෝ විට mysql ලෙස ආරම්භ වනු ඇත, නමුත් සහතික වීමට, Linux පර්යන්තයක විධානය ක්‍රියාත්මක කරන්න:

ps -ef | grep bin/mysqld | කපා -d" " -f1

ප්‍රතිදානය වත්මන් පරිශීලකයා සහ mysqld පරිශීලකයා පෙන්වයි.

cd /var/log
mkdir mysql
chmod 755 mysql
chown mysql:mysql mysql

  • long_query_time - විමසුම් දිග පරීක්ෂා කිරීමට තත්පර කිහිපයකින් කාලය. අගය 5 නම්, සැකසීමට තත්පර 5කට වඩා ගත වන සියලුම ඉල්ලීම් ලොග් වනු ඇත.
  • log_queries_not_using_indexes - දර්ශක භාවිතා නොකරන විමසුම් ලොග් විය යුතුද යන්න තීරණය කරන බූලියන් අගයකි. විශ්ලේෂණය කරන විට, එවැනි විමසුම් වැදගත් වේ.
  • min_examined_row_limit - විශ්ලේෂණය කළ යුතු අවම පේළි ගණන නිර්වචනය කරයි. 1000 ක අගයක් සමඟ, පේළි 1000 ට වඩා අඩු විග්‍රහ කරන සියලුම විමසුම් නොසලකා හරිනු ඇත.

MySQL සේවාදායක විචල්‍යයන් MySQL වින්‍යාස ගොනුව තුළ හෝ ගතිකව භාවිතයෙන් සැකසිය හැක. පරිශීලක අතුරුමුහුණතහෝ MySQL විධාන රේඛාව. වින්‍යාස ගොනුවේ විචල්‍යයන් සකසා ඇත්නම්, සේවාදායකය නැවත ආරම්භ කරන විට ඒවා පවතිනු ඇත, නමුත් ඒවා සක්‍රිය කිරීමට සේවාදායකය නැවත ආරම්භ කළ යුතුය. MySQL වින්‍යාස ගොනුව සාමාන්‍යයෙන් /etc/my.cnf හෝ /etc/mysql/my.cnf හි පිහිටා ඇත. වින්‍යාස ගොනුව සොයා ගැනීමට, ඇතුල් කරන්න (ඔබේ සෙවුම වෙනත් මූල නාමාවලි වෙත ව්‍යාප්ත කිරීමට අවශ්‍ය විය හැක):

find /etc -name my.cnf
සොයන්න /usr -name my.cnf

ඔබ වින්‍යාස ගොනුව සොයාගත් පසු, කොටසට අවශ්‍ය විචල්‍යයන් එක් කරන්න:


….
slow-query-log = 1
slow-query-log-file = /var/log/mysql/localhost-slow.log
long_query_time = 1
log-queries-not-using-indexes

වෙනස්කම් බලාත්මක වීමට නම්, ඔබ සේවාදායකය නැවත ආරම්භ කළ යුතුය. වෙනස්කම් වහාම සක්රිය කිරීමට අවශ්ය නම්, විචල්යයන් ගතිකව සකසන්න:

mysql> SET GLOBAL slow_query_log = "ON";
mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log";
mysql> GLOBAL SET log_queries_not_using_indexes = "ON";
mysql> SET SESSION long_query_time = 1;
mysql> SET SESSION min_examined_row_limit = 100;

විචල්‍ය අගයන් පරීක්ෂා කිරීමට:

mysql> "slow_query_log" වැනි ගෝලීය විචල්‍ය පෙන්වන්න;
mysql> "long_query_time" වැනි සැසි විචල්‍ය පෙන්වන්න;

MySQL විචල්‍යයන් ගතිකව වෙනස් කිරීමේ එක් අවාසියක් නම් සේවාදායකය නැවත ආරම්භ කරන විට විචල්‍යයන් නැති වීමයි. එබැවින්, සුරැකිය යුතු සියලුම වැදගත් විචල්යයන් ගොනුවට එකතු කළ යුතුය.

පැතිකඩ විමසුමක් උත්පාදනය කිරීම

දැන් ඔබ මන්දගාමී විමසුම් ලොග් සැකසුම් ගැන හුරුපුරුදුය. පැතිකඩ සඳහා විමසුම් දත්ත උත්පාදනය කිරීමට උත්සාහ කරන්න.

සටහන: මෙහි දී ඇති උදාහරණය මන්දගාමී විමසුම් ලඝු-සටහන් වින්‍යාස කිරීමකින් තොරව ධාවනය වන MySQL නිදසුනක් මත ධාවනය කර ඇත. මෙම පරීක්ෂණ විමසුම් හරහා ධාවනය කළ හැක GUIහෝ විධාන රේඛාව MySQL.

මන්දගාමී ඉල්ලීම් ලොගය නිරීක්ෂණය කරන විට, ටර්මිනල් කවුළු දෙකක් විවෘත කිරීම ප්රයෝජනවත් වේ: යැවීම සඳහා එක් සම්බන්ධතාවයක් MySQL ප්රකාශයන්, සහ දෙවැන්න ඉල්ලීම් ලොගය බැලීම සඳහා ය.

SUPER ADMIN වරප්‍රසාද සහිත පරිශීලකයෙකු ලෙස කොන්සෝලය භාවිතා කරමින් MySQL සේවාදායකයට ලොග් වන්න. ආරම්භ කිරීමට, පරීක්ෂණ දත්ත සමුදායක් සහ වගුවක් සාදන්න, එයට ව්‍යාජ දත්ත එකතු කරන්න, සහ මන්දගාමී විමසුම් ලොග් වීම සක්‍රීය කරන්න.

සටහන: ඉතා මැනවින්, විමසුම් ලොගය අවුල් වීම වළක්වා ගැනීම සඳහා MySQL භාවිතා කරන වෙනත් යෙදුම් නොමැති පරිසරයක මෙම උදාහරණය වඩාත් හොඳින් ක්‍රියාත්මක වේ.

$> mysql -u -p
mysql> දත්ත සමුදාය පැතිකඩ_නියැදීමක් සාදන්න;

mysql> profile_sampling භාවිතා කරන්න;


mysql> TABLE පරිශීලකයින් සාදන්න (id TINYINT ප්‍රාථමික යතුරු ස්වයංක්‍රීය_ඉන්ක්‍රීමන්ට්, නම VARCHAR(255));


mysql> පරිශීලකයන් තුළට ඇතුළු කරන්න (නම) අගයන් ("වෝල්ටර්"),("ස්කයිලර්"),("ජෙසී"),("හැන්ක්"),("වෝල්ටර් ජූනියර්"),("මාරි"),("සෝල් "),("ගුස්ටාවෝ"),("හෙක්ටර්"),("මයික්");


mysql> GLOBAL SET slow_query_log = 1;


mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log";


mysql> GLOBAL log_queries_not_using_indexes = 1 සකසන්න;


mysql> SET long_query_time = 10;


mysql> SET min_examined_row_limit = 0;

දැන් ඔබට පරීක්ෂණ දත්ත ගබඩාවක් සහ දත්ත කිහිපයක් සහිත වගුවක් තිබේ. මන්දගාමී විමසුම් ලොගය සක්‍රීය කර ඇත. අපි හිතාමතාම ඉල්ලීම් සැකසීමේ කාලය ඉහළ අගයකට සකසා පේළි ගණන් පරීක්ෂාව අක්‍රිය කළෙමු. ලොගය බැලීමට, ඇතුළත් කරන්න:

cd /var/log/mysql
ls -l

දැනට, ෆෝල්ඩරයේ මන්දගාමී ඉල්ලීම් ලොගයක් නොතිබිය යුතුය මේ මොහොතේඉල්ලීම් තිබුණේ නැහැ. එවැනි ලොගයක් දැනටමත් පවතී නම්, මෙයින් අදහස් වන්නේ ඔබ මන්දගාමී විමසුම් ලොගය සඳහා සහය සක්‍රීය කර ඇති බැවින් දත්ත සමුදාය දැනටමත් මන්දගාමී විමසුම් වලට මුහුණ දී ඇති බවයි. මෙය මෙම උදාහරණයේ ප්‍රතිඵල විකෘති කළ හැකිය. MySQL ටැබය වෙත ආපසු ගොස් ධාවනය කරන්න:

mysql> profile_sampling භාවිතා කරන්න;
mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනක id = 1;

ක්රියාත්මක කරන ලද විමසුම සරලව දත්ත ලබා ගන්නා අතර වගුවේ ඇති පළමු යතුරේ දර්ශකය භාවිතා කරයි. මෙම විමසුම වේගවත් වූ අතර දර්ශකයක් භාවිතා කර ඇත, එබැවින් එය මන්දගාමී විමසුම් ලොගයේ සටහන් නොවේ. නාමාවලිය වෙත ආපසු ගොස් විමසුම් ලොගයක් නිර්මාණය කර නොමැති බවට වග බලා ගන්න. දැන් MySQL කවුළුව වෙත ආපසු ගොස් ධාවනය කරන්න:

mysql>

මෙම විමසුම දර්ශකයක් භාවිතා නොකරයි. දැන් මේ වගේ දෙයක් log /var/log/mysql/localhost-slow.log හි දිස්විය යුතුය:

# වේලාව: 140322 13:54:58

පැතිකඩ_නියැදීම භාවිතා කරන්න;
සකසන්න කාල මුද්‍රාව=1395521698;

තවත් එක් උදාහරණයක්. විග්‍රහ කිරීමට අවම පේළි ගණන වැඩි කර මෙවැනි ඉල්ලීමක් යවන්න:

mysql> SET min_examined_row_limit = 100;
mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනක නම = "වෝල්ටර්";

ඉල්ලීම අතරතුරදී පේළි 100කට වඩා අඩු ප්‍රමාණයක් විශ්ලේෂණය කර ඇති නිසා දත්ත ලොගයට එක් නොකරනු ඇත.

සටහන: දත්ත ලොගයට එකතු කර නොමැති නම්, ඔබ සාධක කිහිපයක් පරීක්ෂා කළ යුතුය. පළමුව, ලොගය නිර්මාණය කර ඇති නාමාවලියෙහි අවසරයන් පරීක්ෂා කරන්න. එය mysqld පරිශීලක/කණ්ඩායම සතු විය යුතු අතර chmod 755 වරප්‍රසාද තිබිය යුතුය. ඔබගේ සැකසීම් අභිබවා යන වෙනත් මන්දගාමී විමසුම් සැකසුම් සේවාදායකයේ තිබේ දැයි බැලීමට ඔබ පරීක්ෂා කළ යුතුය. වින්‍යාස ගොනුවෙන් සියලුම මන්දගාමී ඉල්ලීම් විචල්‍ය ඉවත් කිරීමට පෙරනිමි නැවත සකසන්න සහ සේවාදායකය නැවත ආරම්භ කරන්න. ඔබට ගෝලීය විචල්‍යයන් ඒවායේ පෙරනිමි අගයන්ට ගතිකව සැකසිය හැක. ඔබ ගතිකව වෙනස්කම් සිදු කරන්නේ නම්, සිටුවම් යාවත්කාලීන කිරීමට ලොග් අවුට් වී MySQL වෙත නැවත ලොග් වන්න.

විමසුම් පැතිකඩ දත්ත විශ්ලේෂණය කිරීම

පහත දත්ත සලකා බලන්න:

# වේලාව: 140322 13:54:58
#User@Host: root@localhost
# විමසුම්_වේලාව: 0.000303 අගුළු_කාලය: 0.000090 පේළි_යවා ඇත: 1 පේළි_පරීක්ෂා කළ: 10
පැතිකඩ_නියැදීම භාවිතා කරන්න;
සකසන්න කාල මුද්‍රාව=1395521698;
තෝරන්න * පරිශීලකයින්ගෙන් කොහෙද නම = "ජෙසී";

මෙම ප්‍රවේශය පෙන්වයි:

  • විමසුම් ක්රියාත්මක කිරීමේ කාලය
  • කවුද එව්වේ
  • ඉල්ලීම ක්‍රියාවට නැංවීමට කොපමණ කාලයක් ගත වූවාද?
  • දිග
  • පේළි කීයක් ආපසු දුන්නා
  • පේළි කීයක් විග්‍රහ කළාද?

විචල්‍යවල දක්වා ඇති කාර්ය සාධන අවශ්‍යතා උල්ලංඝනය කරන ඕනෑම ඉල්ලීමක් ලොගයෙන් අවසන් වන බැවින් මෙය ප්‍රයෝජනවත් වේ. මෙය සංවර්ධකයෙකුට හෝ පරිපාලකයෙකුට ක්‍රියා නොකරන ඉල්ලීම් ඉක්මනින් සොයා ගැනීමට ඉඩ සලසයි. අතිරේකව, විමසුම් පැතිකඩ දත්ත ඔබගේ යෙදුම දුර්වල ලෙස ක්‍රියා කිරීමට හේතු වන තත්වයන් තීරණය කිරීමට ඔබට උපකාර කළ හැක.

mysqldumpslow භාවිතා කිරීම

මධ්‍යස්ථ දත්ත ප්‍රවාහය සහතික කිරීම සඳහා දත්ත සමුදාය පදනම් කරගත් යෙදුම්වල පැතිකඩ ඇතුළත් කළ හැක.

ලොග් ප්‍රමාණය වැඩි වන විට, සියලු දත්ත විග්‍රහ කිරීම අපහසු වන අතර ගැටළු සහගත විමසුම් පහසුවෙන් එහි නැති වී යා හැක. MySQL විසින් mysqldumpslow නම් මෙවලමක් ඉදිරිපත් කරයි, එය මන්දගාමී විමසුම් ලොගය බෙදීමෙන් මෙම ගැටළුව මඟහරවා ගැනීමට උපකාරී වේ. ද්විමය MySQL වෙත සම්බන්ධ කර ඇත (ලිනක්ස් මත), එබැවින් ඔබට විධානය ක්‍රියාත්මක කළ හැකිය:

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

විධානයට එහි ප්‍රතිදානය අභිරුචිකරණය කිරීමට විවිධ පරාමිති පිළිගත හැකිය. ඉහත උදාහරණය සාමාන්‍ය විමසුම් කාලය අනුව වර්ග කරන ලද ඉහළම විමසුම් 5 පෙන්වයි. එවැනි තන්තු වඩාත් කියවිය හැකි අතර ඉල්ලීම අනුවද කාණ්ඩගත කර ඇත.

ගණන්: 2 වේලාව=68.34 තත් (136 තත්) අගුල=තත්පර 0.00 (තත්පර 0) පේළි=39892974.5 (79785949), root@localhost
PL.pl_title, P.page_title තෝරන්න
P පිටුවෙන්
INNER JOIN පිටු සබැඳි PL
PL.pl_namespace = P.page_namespace මත
P.page_namespace = N

ප්‍රතිදානය පහත දත්ත පෙන්වයි:

  • ගණන් කරන්න: ඉල්ලීම ලොග් වූ වාර ගණන.
  • වේලාව: සාමාන්ය සහ සම්පූර්ණ ඉල්ලීම් කාලය (වරහන් තුළ).
  • අගුල: මේස අගුලු දැමීමේ වේලාව.
  • පේළි: ආපසු ලැබුණු පේළි ගණන.

විධානය සංඛ්‍යාත්මක සහ තන්තු අගයන් බැහැර කරයි, එබැවින් විවිධ ස්ථාන සහිත සමාන විමසුම් එකම ලෙස සලකනු ලැබේ. mysqldumpslow මෙවලම මන්දගාමී විමසුම් ලොගය නිරන්තරයෙන් සමාලෝචනය කිරීමේ අවශ්‍යතාවය ඉවත් කරයි, ඒ වෙනුවට ඔබට නිතිපතා සිදු කිරීමට ඉඩ සලසයි. ස්වයංක්රීය චෙක්පත්. mysqldumpslow විධාන විකල්ප මඟින් ඔබට සංකීර්ණ ප්‍රකාශන ක්‍රියාත්මක කිරීමට ඉඩ සලසයි.

බිඳවැටීම ඉල්ලන්න

මතක තබා ගත යුතු තවත් පැතිකඩ මෙවලමක් වන්නේ සංකීර්ණ විමසුම් බිඳීමේ මෙවලමයි. මන්දගාමී විමසුම් ලොගයේ ඇති ගැටළු සහගත විමසුම් හඳුනාගෙන එය MySQL හි ධාවනය කිරීමට එය ඔබට ඉඩ සලසයි. පළමුව ඔබ පැතිකඩ සක්රිය කළ යුතු අතර පසුව විමසුම ක්රියාත්මක කරන්න:

mysql> SET SESSION profiling = 1;
mysql> profile_sampling භාවිතා කරන්න;
mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනද නම = "ජෙසී";
mysql> පැතිකඩ පෙන්වන්න;

පැතිකඩ සක්‍රීය කළ පසු, SHOW PROFILES මඟින් Query_ID SQL ප්‍රකාශනය සමඟ සම්බන්ධ කරන වගුවක් පෙන්වනු ඇත. ධාවනය වන විමසුමට අදාළ Query_ID සොයාගෙන පහත විමසුම ක්‍රියාත්මක කරන්න (# ඔබේ Query_ID සමඟ ප්‍රතිස්ථාපනය කරන්න):

mysql> තොරතුරැ_ යෝජනා ක්‍රමයෙන් * තෝරන්න.PROFILING WHERE QUERY_ID=#;

විධානය මඟින් වගුවක් ලබා දෙනු ඇත:

SEQ රජයේ කාල සීමාව
1 පටන් ගන්නවා 0.000046
2 අවසර පරීක්ෂා කිරීම 0.000005
3 විවෘත මේස 0.000036

STATE යනු විමසුම් ක්‍රියාත්මක කිරීමේ ක්‍රියාවලියේ පියවරක් වන අතර DURATION යනු තත්පර කිහිපයකින් එම පියවර සම්පූර්ණ කිරීමට ගතවන කාලයයි. එය ඉතා නොවේ ප්රයෝජනවත් මෙවලමක්, නමුත් එය විමසුම් ක්‍රියාත්මක කිරීමේ කුමන කොටස වඩාත් ප්‍රමාදයට හේතු වේද යන්න තීරණය කිරීමට උපකාරී වේ.

සටහනසටහන: මෙම මෙවලම නිෂ්පාදන පරිසරයක භාවිතා නොකළ යුතුය.

මන්දගාමී විමසුම් ලඝු කාර්ය සාධනය

ඉතිරිව ඇත්තේ මන්දගාමී විමසුම් ලොගය කාර්ය සාධනයට බලපාන්නේ කෙසේදැයි සොයා බැලීමයි. සාමාන්‍යයෙන්, නිෂ්පාදන පරිසරයක් තුළ මන්දගාමී විමසුම් ලොග ධාවනය කිරීම ආරක්ෂිත වේ; CPU හෝ I/O වලට බලපෑම් නොකළ යුතුය. කෙසේ වෙතත්, ගොනු පද්ධතියට ලොගය ඉතා විශාල නොවන බව සහතික කිරීම සඳහා ලොග් ප්‍රමාණය නිරීක්ෂණය කිරීම සඳහා ඔබට උපාය මාර්ගයක් තිබිය යුතුය. අතිරේකව, නිෂ්පාදන පරිසරයක මන්දගාමී විමසුම් ලොගයක් ධාවනය කරන විට, ඔබ long_query_time 1 හෝ ඊට වැඩි ලෙස සැකසිය යුතුය.

නිගමනය

මන්දගාමී විමසුම් ලොගයක් ඔබට ගැටළු සහගත විමසුම් හඳුනා ගැනීමට සහ සමස්ත විමසුම් කාර්ය සාධනය ඇගයීමට උපකාරී වේ. ඒ සමගම, යෙදුම ක්රියාත්මක වන ආකාරය පිළිබඳ සවිස්තරාත්මක අවබෝධයක් සංවර්ධකයාට ලබා ගත හැකිය MySQL විමසුම්. mysqldumpslow මෙවලම ඔබට මන්දගාමී විමසුම් ලොග කළමනාකරණය කිරීමට සහ ඔබේ සංවර්ධන ක්‍රියාවලියට පහසුවෙන් ඒවා ඇතුළත් කිරීමට ඉඩ සලසයි. ගැටළු සහගත විමසුම් හඳුනා ගැනීමෙන්, කාර්ය සාධනය වැඩි දියුණු කිරීම සඳහා ඔබට විමසුම් සැකසීම ප්‍රශස්ත කළ හැක.

Tags:

සිදුවීම් ලඝු-සටහන් යනු පද්ධති තත්ත්වය තීරණය කිරීම සහ දෝෂ හඳුනාගැනීම සඳහා වන පළමු සහ සරලම මෙවලමයි. MySQL හි ප්‍රධාන ලඝු හතරක් ඇත:

  • දෝෂ ලොගය- සේවාදායකය ක්‍රියාත්මක වන විට එකතු කරන ලද සම්මත දෝෂ ලොගය (ආරම්භය සහ නැවැත්වීම ඇතුළුව);
  • ද්විමය ලොගය— අනුකරණය සහ උපස්ථ සඳහා අවශ්‍ය සියලුම දත්ත සමුදා වෙනස් කිරීමේ විධාන වල ලොගයක්;
  • සාමාන්‍ය විමසුම් ලොගය- ප්රධාන විමසුම් ලොගය;
  • මන්දගාමී විමසුම් ලොගය- මන්දගාමී ඉල්ලීම් ලොගය.

දෝෂ ලොගය

තීරනාත්මක දෝෂ, මෙන්ම සේවාදායක වසා දැමීම්, සේවාදායක ආරම්භ කිරීම් සහ අනතුරු ඇඟවීම් ඇතුළුව සේවාදායකය ක්‍රියාත්මක වන විට සිදු වූ සියලුම දෝෂ මෙම ලොගයේ අඩංගු වේ. පද්ධතිය අසාර්ථක වූ විට ඔබ ආරම්භ කළ යුත්තේ මෙයයි. පෙරනිමියෙන්, සියලුම දෝෂ කොන්සෝලයට (stderr) ප්‍රතිදානය වේ, ඔබට syslog (Debian මත පෙරනිමිය) හෝ වෙනම ලොග් ගොනුවකට දෝෂ ලොග් කළ හැකිය:

Log_error=/var/log/mysql/mysql_error.log

# දෝෂ mysql_error.log වෙත ලියා ඇත

දෝෂ ඉක්මනින් හඳුනා ගැනීමට මෙම ලොගය සක්‍රීය කර තබා ගැනීමට අපි නිර්දේශ කරමු. මෙම හෝ එම දෝෂය යන්නෙන් අදහස් කරන්නේ කුමක්ද යන්න තේරුම් ගැනීමට, MySQL හට වැරදි උපයෝගීතාව ඇත:

Shell> perror 13 64 OS දෝෂ කේතය 13: අවසරය ප්‍රතික්ෂේප කරන ලද OS දෝෂ කේතය 64: යන්ත්‍රය ජාලයේ නැත

# දෝෂ කේතවල තේරුම පැහැදිලි කරයි

Binary (aka binary) log

සියලුම දත්ත සමුදා වෙනස් කිරීමේ විධානයන් ද්විමය ලොගයේ සටහන් කර ඇත, අනුකරණය සහ ප්‍රතිසාධනය සඳහා ප්‍රයෝජනවත් වේ.

එය මේ ආකාරයට ක්‍රියාත්මක වේ:

Log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# ස්ථානය, ආයු කාලය සහ දක්වයි උපරිම ප්රමාණයගොනුව

ඔබ පද්ධතිය පරිමාණය කිරීමට සහ දෝෂ ඉවසීම ක්‍රියාත්මක කිරීමට නොයන්නේ නම්, ද්විමය ලොගය සක්‍රීය නොකිරීමට වඩා හොඳ බව කරුණාවෙන් සලකන්න. එය සම්පත් දැඩි වන අතර පද්ධතියේ කාර්ය සාධනය අඩු කරයි.

ඉල්ලීම් ලොගය

මෙම ලොගයේ ලැබුණු සියලුම SQL විමසුම් සහ සේවාදායක සම්බන්ධතා පිළිබඳ තොරතුරු අඩංගු වේ. දර්ශක විශ්ලේෂණය සහ ප්‍රශස්තිකරණය සඳහා මෙන්ම වැරදි විමසුම් හඳුනා ගැනීම සඳහා ප්‍රයෝජනවත් විය හැක:

General_log_file = /var/log/mysql/mysql.log general_log = 1

# ලොගය ඇතුළත් වන අතර ගොනු ස්ථානය දක්වයි

MySQL සේවාදායකය ක්‍රියාත්මක වන අතරතුර ඔබට එය සක්‍රීය/අබල කිරීමටද හැකිය:

SET GLOBAL general_log = "ON"; SET GLOBAL general_log = "OFF";

# ඔබට එය භාවිතා කිරීමට සේවාදායකය නැවත ආරම්භ කිරීමට අවශ්‍ය නොවේ

මන්දගාමී ඉල්ලීම් ලොගය

මන්දගාමී, එනම් අකාර්යක්ෂම විමසුම් හඳුනා ගැනීමට ලොගය ප්‍රයෝජනවත් වේ. මෙම ලිපියෙන් වැඩිදුර කියවන්න.

ලඝු-සටහන් බැලීම

ඩේබියන් (උබුන්ටු) හි ලඝු-සටහන් බැලීමට ඔබ ධාවනය කළ යුතුය:

# Error log tail -f /var/log/syslog #Query log tail -f /var/log/mysql/mysql.log # මන්දගාමී ඉල්ලීම් ලොග් කරන්න tail -f /var/log/mysql/mysql-slow.log

# ලඝු-සටහන් වෙන වෙනම සඳහන් කර නොමැති නම්, ඒවා /var/lib/mysql හි පිහිටා ඇත.

ලොග් භ්රමණය

සේවාදායකයේ අඩු ඉඩක් ලබා ගැනීම සඳහා ලොග් ගොනු සම්පීඩනය කිරීමට (සංරක්ෂිතය, කරකවන්න) අමතක නොකරන්න. මෙය සිදු කිරීම සඳහා, උපයෝගීතාව භාවිතා කරන්න logrotateවින්‍යාස ගොනුව සංස්කරණය කිරීමෙන් /etc/logrotate.d/mysql-server:

# - මම සියල්ල එක බ්ලොක් එකකට දමා බෙදාගත් ස්ක්‍රිප්ට් එකතු කළෙමි, එවිට mysql හට # flush-logs"d ලැබෙන්නේ එක් වරක් පමණි. # - දෝෂ ලොගය යල්පැන ඇත, පණිවිඩ දැන් syslog වෙත යයි./var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log(දිනපතා කරකවන්න 7 missingok create 640 mysql adm compress sharescripts postrotate test -x /usr/bin/mysqladmin || පිටවීම 0 # මෙය අසාර්ථක වුවහොත්, debian.conf පරීක්ෂා කරන්න! MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" නම් [ -z "`$MYADMIN ping 2>/dev/null`" ]; ඉන්පසු # ඇත්තටම mysqld නැතිද නැතිනම් නැතිවූ debian-sys-main පරිශීලකයෙක්ද? # මෙය සිදුවුවහොත් සහ දෝෂයක් නොවේ නම් කරුණාකර දෝෂයක් වාර්තා කරන්න. #if ps cax | grep -q mysqld; ඉන්පසු killall -q -s0 -umysql mysqld නම්; ඉන්පසු තවත් $MYADMIN flush-logs fi endscript 1 න් පිටවන්න

# අවශ්‍ය ලොග් සම්පීඩනය කර ලේඛනගත කරයි, ලිපිගොනු පිරිසිදු කරයි

DDL ලොගය

MySQL ද දත්ත භාෂා ලොගයක් පවත්වාගෙන යයි. එය DROP_TABLE සහ ALTER_TABLE වැනි මෙහෙයුම් වලින් දත්ත රැස් කරයි. එවැනි මෙහෙයුම් වලදී සිදු වූ අසාර්ථකත්වයන් යථා තත්ත්වයට පත් කිරීම සඳහා ලොගය භාවිතා වේ. DDL Log ද්විමය ගොනුවක් වන අතර එය පරිශීලකයා විසින් කියවීමට අදහස් නොකරන බැවින් එය වෙනස් කිරීම හෝ මකා දැමීම නොකරන්න.

වඩාත්ම වැදගත්

සෑම විටම දෝෂ ලොගය සක්‍රිය කරන්න, දත්ත සමුදායට යෙදුමේ සම්බන්ධතාවය පරීක්ෂා කිරීමට, විමසුම් සහ ක්‍රියාකාරිත්වය පරීක්ෂා කිරීමට විමසුම් ලොගය භාවිතා කරන්න. MySQL කාර්ය සාධනය ප්‍රශස්ත කිරීම සඳහා මන්දගාමී විමසුම් සටහන ප්‍රයෝජනවත් වේ.

සංකල්පය

සේවාදායක ලොග (ලොග් ගොනු, සේවාදායක ලොගය)- සේවාදායකයේ පද්ධති තොරතුරු අඩංගු සේවාදායකයේ ගබඩා කර ඇති ගොනු මෙන්ම වෙබ් සම්පතේ ආගන්තුකයා පිළිබඳ හැකි සියලු දත්ත ලොග් කිරීම.

අමුත්තන් විශ්ලේෂණය කිරීමට පද්ධති පරිපාලකයින් විසින් ලඝු-සටහන් භාවිතා කරනු ලැබේ, ඇතැම් පරිශීලක කණ්ඩායම්වල හැසිරීම් රටා අධ්‍යයනය කිරීම මෙන්ම ඔවුන් පිළිබඳ විවිධ තොරතුරු ලබා ගැනීම, එනම්: භාවිතා කළ බ්‍රවුසරය, IP ලිපිනය, සේවාදායකයාගේ භූගෝලීය පිහිටීම පිළිබඳ දත්ත සහ තවත් බොහෝ දේ. විශ්ලේෂණයට අමතරව, මේ ආකාරයෙන් ඔබට වෙබ් අඩවියට අනවසරයෙන් පිවිසීම ගැන දැනගත හැකිය, එය හරියටම කළේ කවුරුන්ද යන්න වඩාත් නිවැරදිව සොයා ගැනීමට සහ මෙම නඩුව පිළිබඳ දත්ත සුදුසු බලධාරීන්ට මාරු කළ හැකිය.

ලොග් ගොනුවේ ඇති දත්ත, එහි පිරිසිදු ස්වරූපයෙන්, සාමාන්‍ය පරිශීලකයින්ට තේරුම් ගත නොහැකි වනු ඇත, ඔවුන් මේ සියල්ල තුළ නොතේරෙන අනුපිළිවෙලක අක්ෂර කට්ටලයක් පමණක් දකිනු ඇත. නමුත් සඳහා පද්ධති පරිපාලකයින්සහ වෙබ් සංවර්ධකයින්, මෙය ඉතා කියවිය හැකි පෙළක් වන අතර තරමක් ප්‍රයෝජනවත් තොරතුරු වේ.


සිදුවීම් අනුපිළිවෙල

සේවාදායකයෙක් වෙබ් සම්පතකට ප්‍රවේශ වන සෑම අවස්ථාවකම, සිදුවීම් කිහිපයක් එකවර ක්‍රියාත්මක වේ, එහි අනුපිළිවෙල අපි කතා කරමු.

1. පිටු ඉල්ලීමක් කිරීම.ඔබ බ්‍රවුසර රේඛාවට ලිපිනයක් ඇතුළු කරන විට, හෝ ඔබ සක්‍රිය වෙබ් සබැඳියක් අනුගමනය කරන විට, උදාහරණයක් ලෙස, සෙවුම් යන්ත්‍ර ප්‍රතිඵල පිටුවකින්, බ්‍රවුසරය සෙවුම් කර පිටුව පිහිටා ඇති සේවාදායකයට සම්බන්ධ වන අතර ඒ සඳහා ඉල්ලීමක් කරයි. ඒ සමඟම, එය සේවාදායකයට පහත තොරතුරු සම්ප්රේෂණය කරයි:
- පිටුව ඉල්ලා සිටින සේවාදායක පරිගණකයේ IP ලිපිනය (ප්‍රොක්සි සේවාදායකයක් භාවිතා කරන්නේ නම්, ඔබේ ප්‍රොක්සියේ IP ලිපිනය);
- පරිශීලකයා විසින් ඉල්ලා සිටින අන්තර්ජාල පිටුවේ ලිපිනය (IP ලිපිනය);
- ඉල්ලීම ඉදිරිපත් කළ නිශ්චිත වේලාව සහ දිනය;
- සේවාදායකයාගේ සැබෑ ස්ථානය පිළිබඳ දත්ත (ප්‍රොක්සි සේවාදායකයක් භාවිතා කරන්නේ නම්, සත්‍ය ප්‍රොක්සි ලිපිනය);
- සේවාදායකයා විසින් භාවිතා කරන බ්රවුසරය පිළිබඳ තොරතුරු (නම, අනුවාදය, ආදිය);
- සේවාදායකයා මාරු කළ වෙබ් පිටුව පිළිබඳ දත්ත.

2. ඉල්ලූ දත්ත මාරු කිරීම.ඉල්ලුම් කරන ලද දත්ත (වෙබ් පිටුව, ගොනු, කුකීස්, ආදිය) සේවාදායකයේ සිට පරිශීලකයාගේ පරිගණකය වෙත මාරු කරනු ලැබේ.

3. සේවාදායක ලොගයට ලියන්න.සෑම දෙයකටම පසු, ලොග් ඇතුළත් කිරීමක් සිදු වේ, එය පසුගිය සිදුවීම් දෙකේ දර්ශනය වූ සියලුම දත්ත දක්වයි. මෙය පළමු ඡේදයේ යවන ලද සියලුම තොරතුරු මෙන්ම සම්ප්රේෂණය කරන ලද දත්ත පිළිබඳ තොරතුරු වේ.

සේවාදායක ලොග් බලන්නේ කෙසේද?

ලොග් ගොනු ගොනුවක් තුළ ගබඩා කර ඇත access.logඔබ කුමන ආකාරයේ වෙබ් සේවාදායකයක් භාවිතා කළත් (Apache, Nginx, squid proxy, ආදිය) මෙම ගොනුවවේ පෙළ ලේඛනය, එක් අභියාචනයක් ලියා ඇති සෑම පේළියකම. තුළ පටිගත කිරීමේ ආකෘති access.logබොහෝ දේ ඇත, නමුත් වඩාත්ම ජනප්‍රිය ඒකාබද්ධ වේ, එහි ප්‍රවේශයට පහත පෝරමය සහ අනුපිළිවෙල ඇත:

කේතය: %h %l %u %t \"%r\" %>s %b \"%(යොමු කරන්නා)i\" \"%(User-Agent)i\"
කොහෙද:

%h- ඉල්ලීම සිදු කරන ලද සත්කාරක/IP ලිපිනය;
%ටී- සේවාදායකයට සහ සේවාදායක කාල කලාපයට ඉල්ලීමේ වේලාව;
%r- අනුවාදය, අන්තර්ගතය සහ ඉල්ලීම් වර්ගය;
%s- HTTP තත්ව කේතය;
%බී- සේවාදායකය විසින් යවන ලද බයිට් ගණන;
%(යොමු කරන්නා)- ඉල්ලීමේ URL මූලාශ්රය;
%(පරිශීලක නියෝජිතයා)- HTTP ශීර්ෂකය, ඉල්ලීම පිළිබඳ තොරතුරු (සේවාදායක යෙදුම, භාෂාව, ආදිය);
%(සත්කාරක)- ප්‍රවේශ වෙමින් පවතින අතථ්‍ය ධාරකයේ නම.

අවසන් වූ විට, මෙම රේඛාව මේ වගේ දෙයක් පෙනේ:

127.0.0.1 - - "GET /index.php HTTP/1..0 (අනුකූල; MSIE 7.0; Windows NT 5.1)"

ලඝු-සටහන් අතින් කියවීමට බොහෝ කාලයක් හා වෑයමක් ගතවනු ඇත. එබැවින්, පළපුරුදු වෙබ්මාස්ටර්වරුන් "ලොග් ගොනු විශ්ලේෂක" නමින් විශේෂ මෘදුකාංග භාවිතා කරයි. ඔවුන් මිනිසුන්ට කියවීමට තරමක් අපහසු සියලු දත්ත විශ්ලේෂණය කර ව්‍යුහගත දත්ත නිෂ්පාදනය කරයි. මේවා එවැනි වැඩසටහන් වේ: Analog, WebAnalizer, Webalizer, Awstats, Webtrends, ආදිය.විශේෂ වර්ග මෘදුකාංගබොහෝ දේ, ඔවුන් අතර එවැනි ඒවා ඇත ගෙවන වැඩසටහන්, සහ නොමිලේ. එමනිසා, සෑම කෙනෙකුම ඔවුන්ගේ අභිමතය පරිදි යමක් සොයා ගන්නා බව මට විශ්වාසයි.

අඩවි ලොග් සොයා ගත හැකි ස්ථානය

ඔබට සාමාන්‍ය සත්කාරකත්වයක් තිබේ නම්, බොහෝ විට ඔබට ඔබේ සත්කාරකයට ලියා ඔහුගෙන් ලොග් ඉල්ලා සිටීමට සිදුවනු ඇත. එසේම, බොහෝ විට, ඔබට සත්කාරක පැනලය හරහා ඒවා ඉල්ලා සිටිය හැක. විවිධ සත්කාරකයින් එය වෙනස් ආකාරයකින් කරයි. උදාහරණයක් ලෙස, මගේ සත්කාරක සමාගමෙන් ඉල්ලීමට, ක්ලික් කරන්න මුල් පිටුවපැනල්:


ඔබට ප්රවේශය තිබේ නම් පද්ධති ෆෝල්ඩරසේවාදායකය, එවිට ඔබට ලොග සොයා ගත හැක /etc/httpd/logs/access_logනඩු 100 න් 99 කදී.

දෝෂ ලොගය error.log

Error.log- ලඝු-සටහන් ද තබා ඇති ගොනුවක්. නමුත් අමුත්තන් නොව, සේවාදායකයේ සිදු වූ දෝෂ. සිදු වන පරිදි access.log, ගොනුවේ සෑම පේළියක්ම සිදු වූ එක් දෝෂයක් සඳහා වගකිව යුතුය. පටිගත කිරීම සිදු කරනු ලබන්නේ එවැනි තොරතුරු සැලකිල්ලට ගනිමින්: දෝෂය සිදු වූ නිශ්චිත දිනය සහ වේලාව, දෝෂය නිකුත් කළ IP ලිපිනය, දෝෂයේ වර්ගය සහ එය සිදුවීමට හේතුව.

නිගමනය

ලඝු-සටහන් යනු වැඩ කිරීමට ප්‍රබල සහ තොරතුරු සපයන මෙවලමකි. නමුත් වර්තමානයේ, ඔවුන් Yandex.Metrica, Google Analytics වැනි මෙවලම් මගින් ප්රතිස්ථාපනය කරනු ලබන අතර, එමගින් අපගේ ජීවිතය පහසු කරවයි. කෙසේ වෙතත්, ඔබ නව දෙයක් සංවර්ධනය කිරීමට, වර්ධනය කිරීමට සහ ඉගෙන ගැනීමට අදහස් කරන්නේ නම්, මෙම මාතෘකාව වඩාත් හොඳින් දැන ගැනීමට මම නිසැකවම නිර්දේශ කරමි.

Mysql හි පැතිකඩ විමසුම්ඔබගේ යෙදුමේ කාර්ය සාධනය ඇගයීමට භාවිතා කරයි. මධ්‍යම සිට විශාල යෙදුම් සංවර්ධනය කිරීමේදී, සෑම තත්පරයකම ක්‍රියාත්මක වන ඔබේ කේතය පුරා බෙදා හරින ලද ඉල්ලීම් සිය ගණනක් සමඟ කටයුතු කිරීමට ඔබට සිදුවේ. විමසුම් පැතිකඩ කිරීමේ ක්‍රම නොමැතිව, ඔබගේ යෙදුමේ ක්‍රියාකාරීත්වය දුක් විඳීමට හේතුව කුමක්දැයි සොයා ගැනීම ඉතා අපහසු විය හැක.

MySQL හි මන්දගාමී විමසුම් ලොගය කුමක්ද?

MySQL Slow Query Log - මන්දගාමී සහ ගැටළුකාරී විමසුම් සලකුණු කරන ලොගයක්. MySQL පෙරනිමියෙන් මෙම ක්‍රියාකාරිත්වයට සහය දක්වයි, නමුත් එය අක්‍රීය කර ඇත. ඇතැම් සේවාදායක විචල්‍යයන් සැකසීමෙන්, අප උනන්දු වන්නේ කුමන ඉල්ලීම්ද යන්න සඳහන් කළ හැක. බොහෝ විට, අපට සම්පූර්ණ කිරීමට යම් කාලයක් අවශ්‍ය වන විමසුම් හෝ දර්ශක නිවැරදිව ක්‍රියා නොකරන විමසුම් අවශ්‍ය වේ.

පැතිකඩ විචල්යයන් සැකසීම

විමසුම් ලොගය සැකසීම සඳහා ප්‍රධාන විචල්‍යයන්:

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

අදහස් දක්වන්න: G - ගෝලීය විචල්යයන්, S - පද්ධති විචල්යයන්

  • slow_query_log - ලොග් ඇතුළු boolean අගය
  • slow_query_log_file - ලොග් ගොනුව වෙත නිරපේක්ෂ මාර්ගය. නාමාවලියෙහි හිමිකරු පරිශීලකයෙකු විය යුතුය mysqld, සහ නාමාවලියට නිවැරදි කියවීමට සහ ලිවීමට අවසර තිබිය යුතුය. බොහෝ විට mysql ඩීමන් පරිශීලකයෙකු ලෙස ක්‍රියාත්මක වේ mysql.

පරීක්ෂා කිරීමට, පහත විධානයන් ක්රියාත්මක කරන්න:

Ps-ef | grep bin/mysqld | කපා -d" " -f1

විධානයේ ප්‍රතිදානය ඔබට වත්මන් පරිශීලකයාගේ සහ mysqld පරිශීලකයාගේ නම ලබා දෙනු ඇත. /var/log/mysql බහලුම පිහිටුවීමේ උදාහරණය:

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

  • long_query_time - විමසුම් කාලසීමාව පරීක්ෂා කිරීමට තත්පර කිහිපයකින් කාලය. උදාහරණයක් ලෙස, 5 ක අගයක් සහිතව, තත්පර 5 කට වඩා වැඩි කාලයක් පවතින සෑම ඉල්ලීමක්ම ලොග් වනු ඇත.
  • log_queries_not_using_indexes - boolean අගය, දර්ශක භාවිතා නොකරන විමසුම් සුරැකීම සබල කරයි. එවැනි විමසීම් විශ්ලේෂණයේ දී ඉතා වැදගත් වේ.
  • min_examined_row_limit - විශ්ලේෂණය කළ යුතු දත්ත පේළි ගණන සඳහා අවම අගය නියම කරයි. 1000 ක අගයක් අගයන් පේළි 1000 ට වඩා අඩු ප්‍රමාණයක් ආපසු ලබා දෙන විමසුම් නොසලකා හරිනු ඇත.

මෙම විචල්‍යයන් MySQL වින්‍යාස ගොනුව තුළ ගතිකව MySQL GUI හෝ MySQL විධාන රේඛාව හරහා සැකසිය හැක. වින්‍යාස ගොනුවේ විචල්‍යයන් නියම කර ඇත්නම්, එය ආරම්භ වන විට සේවාදායකය විසින් ඒවා ස්ථාපනය කරනු ඇත. සාමාන්‍යයෙන් මෙම ගොනුව /etc, /usr, /etc/my.cnf හෝ /etc/mysql/my.cnf හි පිහිටා ඇත. වින්‍යාස ගොනුව සෙවීමට විධාන මෙන්න (සමහර විට ඔබ වෙනත් මූල නාමාවලි වෙත සෙවුම පුළුල් කළ යුතුය):

සොයන්න /etc -name my.cnf find /usr -name my.cnf

ඔබ ගොනුව සොයාගත් විට, කොටසෙහි අවශ්ය විචල්යයන් එක් කරන්න:

; ... slow-query-log = 1 slow-query-log-file = /var/log/mysql/localhost-slow.log long_query_time = 1 log-queries-not-using-indexes ; මෙහි තේරුමක් අවශ්‍ය නැත

වෙනස්කම් ක්‍රියාත්මක වන්නේ ඔබ මීළඟ වතාවේ MySQL ආරම්භ කරන විට පමණි; ඔබට ගතිකව පරාමිති වෙනස් කිරීමට අවශ්‍ය නම්, විචල්‍ය සැකසීම සඳහා වෙනත් ක්‍රම භාවිතා කරන්න:

Mysql> SET GLOBAL slow_query_log = "ON"; mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log"; mysql> GLOBAL SET log_queries_not_using_indexes = "ON"; mysql> SET SESSION long_query_time = 1; mysql> SET SESSION min_examined_row_limit = 100;

ඔබට පහත පරිදි විචල්‍යවල අගයන් පරීක්ෂා කළ හැකිය:

Mysql> "slow_query_log" වැනි ගෝලීය විචල්‍ය පෙන්වන්න; mysql> "long_query_time" වැනි සැසි විචල්‍ය පෙන්වන්න;

ගතික ස්ථාපනයක ප්‍රධාන අවාසිය නම් පද්ධතිය ආරම්භ වන විට අගයන් නැති වීමයි. MySQL config හි වැදගත් පරාමිතීන් සඳහන් කිරීම රෙකමදාරු කරනු ලැබේ.

සටහන: හරහා පරාමිතීන් ගතිකව සැකසීම සඳහා වාක්‍ය ඛණ්ඩය SET විධානයසහ config ගොනුව භාවිතා කිරීම තරමක් වෙනස් වේ, උදාහරණයක් ලෙස slow_query_log / slow-query-log . නිල DBMS ප්‍රලේඛනය තුළ ඔබට සින්ටැක්ස් පිළිබඳ සම්පූර්ණ විස්තරයක් සොයාගත හැකිය. වින්‍යාස ගොනුව සඳහා විකල්ප-ගොනු ආකෘතිය භාවිතා වේ, පද්ධති විචල්‍ය නාමය - අගයන් ගතිකව සැකසීමේදී විචල්‍ය නම්.

විමසුම් පැතිකඩ සඳහා දත්ත උත්පාදනය කිරීම

අපි පැතිකඩ සැකසීම සඳහා ප්රධාන කරුණු සමාලෝචනය කර ඇත, දැන් අපි අපට උනන්දුවක් දක්වන විමසුම් නිර්මාණය කරමු. මෙම උදාහරණය ධාවනයකදී භාවිතා කරන ලදී MySQL සේවාදායකයකිසිදු මූලික ලොග් සැකසුම් නොමැතිව. MySQL GUI සහ DBMS විධාන මෙවලම් හරහා නියැදි විමසුම් දියත් කළ හැක. මන්දගාමී විමසුම් වල ලොගය නිරීක්ෂණය කරන විට, සම්බන්ධතාවයක් සහිත කවුළු දෙකක් විවෘත කිරීම පොදු වේ: එකක් විමසුම් ධාවනය කිරීමට, අනෙක ලොගය බැලීමට.

$> mysql -u -p mysql> DATABASE profile_sampling සාදන්න; mysql> profile_sampling භාවිතා කරන්න; mysql> TABLE පරිශීලකයින් සාදන්න (id TINYINT ප්‍රාථමික යතුරු ස්වයංක්‍රීය_ඉන්ක්‍රීමන්ට්, නම VARCHAR(255)); mysql> පරිශීලකයන් තුළට ඇතුළු කරන්න (නම) අගයන් ("වෝල්ටර්"),("ස්කයිලර්"),("ජෙසී"),("හැන්ක්"),("වෝල්ටර් ජූනියර්"),("මාරි"),("සෝල් "),("ගුස්ටාවෝ"),("හෙක්ටර්"),("මයික්"); mysql> GLOBAL SET slow_query_log = 1; mysql> SET GLOBAL slow_query_log_file = "/var/log/mysql/localhost-slow.log"; mysql> GLOBAL log_queries_not_using_indexes = 1 සකසන්න; mysql> SET long_query_time = 10; mysql> SET min_examined_row_limit = 0;

දැන් අපට පරීක්ෂණ දත්ත සහිත දත්ත සමුදායක් ඇත. අපි පැතිකඩ කිරීම දියත් කළ නමුත්, අපි හිතාමතාම ප්‍රතිචාර දැක්වීමේ කාලය සහ පේළි ගණන කුඩා ලෙස සකස් කළෙමු. ලොගය බැලීම සඳහා විධානය භාවිතා කරන්න:

Cd /var/log/mysql ls -l

න්‍යායාත්මකව, ලොග් ගොනුව තවමත් නොපවතියි, මන්ද අප දත්ත සමුදාය වෙත විමසීම් කර නොමැති බැවිනි. එය පවතී නම්, එයින් අදහස් වන්නේ පැතිකඩ සැකසීම කලින් වින්‍යාස කර ඇති අතර මෙය උදාහරණයේ ප්‍රතිඵල විකෘති කළ හැකි බවයි. කොන්සෝලය තුළ ධාවනය කරන්න:

Mysql> profile_sampling භාවිතා කරන්න; mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනක id = 1;

අපගේ විමසුම වගුවේ ඇති ප්‍රාථමික යතුරු දර්ශකය භාවිතා කරයි. ඉල්ලීම ඉතා ඉක්මනින් සූචිය භාවිතයෙන් ක්‍රියාවට නංවා ඇත, එබැවින් එය ලොගයේ පිළිබිඹු නොවිය යුතුය. ලොග් ගොනුව නිර්මාණය කර නොතිබිය යුතු බව කරුණාවෙන් සලකන්න.

දැන් පහත දේ කරන්න:

Mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොහෙද නම = "ජෙසී";

මෙහිදී අපි දර්ශක භාවිතා නොකළෙමු. අපි දැන් මෙම ඉල්ලීම ලොගයේ දැකිය යුතුය:

Sudo cat /var/log/mysql/localhost-slow.log # වෙලාව: 140322 13:54:58 # User@Host: root @ localhost # Query_time: 0.000303 Lock_time: 0.000090 Rows_sent: 1 Rows_exam profile සකසන්න කාල මුද්‍රාව=1395521698; තෝරන්න * පරිශීලකයින්ගෙන් කොහෙද නම = "ජෙසී";

අපි තවත් උදාහරණයක් බලමු. ප්‍රතිචාරයේ ඇති පේළි ගණන මත තීරුව ඉහළට ගෙන පහත විමසුම ක්‍රියාත්මක කරන්න:

Mysql> SET min_examined_row_limit = 100; mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනක නම = "වෝල්ටර්";

ඉල්ලීමට ප්‍රතිචාර දැක්වීමේදී අපි පේළි 100 නොඉක්මවන බැවින් ඉල්ලීම ලොගය තුළ පිළිබිඹු නොවනු ඇත.

සටහන: දත්ත ලොගයේ නොපෙන්වන්නේ නම්, පළමුව ඔබ පහත සඳහන් සාධක සලකා බැලිය යුතුය. පළමුවැන්න නම් ලොග් ගොනුව ගබඩා කර ඇති නාමාවලියෙහි අයිතියයි. කණ්ඩායම සහ පරිශීලකයා mysqld පරිශීලකයාට අනුරූප විය යුතුය, හිමිකම් chmod 755 විය යුතුය. දෙවනුව, පැතිකඩකරණය කලින් වින්‍යාස කර තිබිය හැක. වින්‍යාස ගොනුවෙන් පවතින පැතිකඩ විචල්‍ය අගයන් ඉවත් කර සේවාදායකය නැවත ආරම්භ කරන්න හෝ විචල්‍ය ගතිකව සකසන්න. ඔබ ගතික ක්‍රමය භාවිතා කළේ නම්, ඔබ පිටවී නැවත MySQL කොන්සෝලය වෙත පිවිසෙනු ඇත.

විමසුම් පැතිකඩ දත්ත විශ්ලේෂණය

ඉහත උදාහරණය සලකා බලන්න:

# වෙලාව: 140322 13:54:58 # User@Host: root @ localhost # Query_time: 0.000303 Lock_time: 0.000090 පේළි_යවන ලද: 1 පේළි_පරීක්ෂා කළ: 10 profile_sampling භාවිතා කරන්න; සකසන්න කාල මුද්‍රාව=1395521698; තෝරන්න * පරිශීලකයින්ගෙන් කොහෙද නම = "ජෙසී";

මෙන්න අපි දකිනවා:

  • ඉල්ලීම ආරම්භ කළ වේලාව
  • ඉල්ලීම කළ පරිශීලකයා
  • විවෘත පැය ඉල්ලීම්
  • අගුලු දැමීමේ කාලය
  • තෝරාගත් පේළි ගණන
  • විග්‍රහ කරන ලද පේළි ගණන

මෙම දත්ත ඉතා ප්‍රයෝජනවත් වේ, මන්ද එහි ආධාරයෙන් අපට පද්ධතිය මන්දගාමී වීමට හේතුව සොයා ගැනීමට සහ ඉවත් කිරීමට හැකි බැවිනි. එසේම, MySQL සංවර්ධකයෙකුට හෝ පරිපාලකයෙකුට සැමවිටම ගැටළු සහගත විමසුම් දැකීමට හැකි වන අතර ඒවා මෙහි සොයා ගැනීම යෙදුම් කේතය අධ්‍යයනය කිරීමට වඩා වේගවත් බව සටහන් කිරීමට කැමැත්තෙමි. දිගුකාලීන පැතිකඩ සමඟ, ඔබට අඩු වේගයකින් මෙහෙයුම් තත්ත්වයන් නිරීක්ෂණය කළ හැකිය.

mysqldumpslow භාවිතා කිරීම

ලොගය නිරන්තරයෙන් දත්ත වාර්තා කරයි; රීතියක් ලෙස, එය කියවනවාට වඩා බොහෝ දේ ලියයි. හිදී විශාල ප්රමාණය log, එය කියවීම ගැටළු සහගත වේ. MySQL හි mysqldumpslow නම් මෙවලමක් ඇතුළත් වන අතර එය ලොග් අඛණ්ඩතාව පවත්වා ගැනීමට උපකාරී වේ. මෙම වැඩසටහනම MySQL (on ලිනක්ස් පද්ධති) එය භාවිතා කිරීමට, අනුගමනය කරන්න අවශ්ය විධානයසහ එය ලොග් ගොනුව වෙත ගමන් කරන්න:

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

විධාන ප්‍රතිදානය අභිරුචිකරණය කිරීමට ඔබට උපකාර වන පරාමිති ගණනාවක් තිබේ. පහත උදාහරණයේ සාමාන්‍ය කාලසීමාව අනුව වර්ග කර ඇති අවසාන ඉල්ලීම් පහ අපි දකිමු. එහි ප්රතිඵලයක් වශයෙන්, ලොගය කියවීම වඩාත් පහසු වේ. (සැබෑ ලොග් අගයන් පෙන්වීමට ප්රතිදානය වෙනස් කර ඇත):

ගණන: 2 වේලාව=68.34ත (තත්පර 136) අගුල=තත්පර 0.00 (තත්පර 0) පේළි=39892974.5 (79785949), root@localhost PL.pl_title SELECT, P.page_title පිටුවෙන් P INNER JOIN pagelinks.p PL.name ON pagelinks P.page_namespace = N ...

අපි දකින දේ:

  • ගණන් කිරීම - ලොගයේ ඇති ඉල්ලීමේ සිදුවීම් ගණන
  • කාලය - සාමාන්ය සහ සම්පූර්ණ ඉල්ලීම් කාලය
  • අගුලු දැමීම - මේස අගුලු දැමීමේ කාලය
  • පේළි - තෝරාගත් පේළි ගණන

විධානය සංඛ්‍යාත්මක සහ තන්තු විමසුම් දත්ත බැහැර කරයි, එනම් එකම WHERE වගන්තිය සහිත විමසුම් එකම ලෙස සලකනු ලැබේ. මෙම මෙවලමට ස්තූතියි, ඔබ නිරන්තරයෙන් ලොගය දෙස බැලිය යුතු නැත. විධාන පරාමිති විශාල ප්‍රමාණයක් නිසා, ඔබට අවශ්‍ය පරිදි ප්‍රතිදානය වර්ග කළ හැක. සමාන ක්‍රියාකාරීත්වයක් සහිත තෙවන පාර්ශවීය වර්ධනයන් ද ඇත, උදාහරණයක් ලෙස pt-query-digest.

බිඳවැටීම ඉල්ලන්න

සංකීර්ණ විමසුම් බිඳ දැමීමට ඔබට ඉඩ සලසන වෙනත් මෙවලමක් වෙත අවධානය යොමු කළ යුතුය. බොහෝ විට ඔබට ලොගයෙන් විමසුමක් ගෙන එය කෙලින්ම MySQL කොන්සෝලය තුළ ධාවනය කළ යුතුය. පළමුව ඔබ පැතිකඩ සක්රිය කළ යුතු අතර පසුව විමසුම ක්රියාත්මක කරන්න:

Mysql> SET SESSION profiling = 1; mysql> profile_sampling භාවිතා කරන්න; mysql> තෝරන්න * පරිශීලකයින්ගෙන් කොතැනද නම = "ජෙසී"; mysql> පැතිකඩ පෙන්වන්න;

පැතිකඩ සක්‍රීය කිරීමෙන් පසු, SHOW PROFILES මඟින් Query_ID සහ SQL ප්‍රකාශනය සම්බන්ධ කරන වගුවක් පෙන්වනු ඇත. අදාළ Query_ID සොයාගෙන පහත විමසුම ක්‍රියාත්මක කරන්න (# ඔබේ Query_ID සමඟ ප්‍රතිස්ථාපනය කරන්න):

Mysql> තොරතුරැ_SCHEMA වෙතින් * තෝරන්න.PROFILING WHERE QUERY_ID=#;

උදාහරණ නිමැවුම:

SEQ රාජ්‍ය කාලසීමාව 1 ආරම්භය 0.000046 2 පරීක්ෂා කිරීමේ අවසර 0.000005 3 විවෘත කිරීමේ වගු 0.000036

රජයේ- ඉල්ලීමක් ක්‍රියාත්මක කිරීමේ ක්‍රියාවලියේ පියවරක්, කාල සීමාව- පියවර කාලය තත්පර වලින්. මෙම මෙවලම බොහෝ විට භාවිතා නොවේ, නමුත් සමහර විට එය මන්දගාමී විමසුම් කාර්ය සාධනය හේතුව තීරණය කිරීම සඳහා අතිශයින් ප්රයෝජනවත් විය හැක.

තීරු වල සවිස්තරාත්මක විස්තරය:

පියවර පිළිබඳ සවිස්තරාත්මක විස්තරය:

සටහන: මෙම මෙවලම විශේෂිත විමසුම් විශ්ලේෂණය කිරීම හැර, සේවාදායක නිෂ්පාදන මාදිලියේ භාවිතා නොකළ යුතුය.

මන්දගාමී විමසුම් ලඝු කාර්ය සාධනය

අවසාන ප්‍රශ්නය වන්නේ පැතිකඩකරණය සමස්තයක් ලෙස සේවාදායකයේ ක්‍රියාකාරිත්වයට බලපාන ආකාරයයි. සේවාදායකයේ නිෂ්පාදන මාදිලියේදී, ඔබට එවැනි ලොග් කිරීම ඉතා ආරක්ෂිතව භාවිතා කළ හැකිය; එය CPU හෝ I/O වලට බලපාන්නේ නැත. කෙසේ වෙතත්, ලොග් ගොනුවේ ප්‍රමාණය කෙරෙහි අවධානය යොමු කිරීම වටී; එය තහනම් තරම් විශාල නොවිය යුතුය. දිගු_query_time විචල්‍යයේ අගය තත්පර 1ක් හෝ ඊට වැඩි අගයකට සැකසීම බව අත්දැකීමෙන් සටහන් කිරීමටද කැමැත්තෙමි.

වැදගත්: ඔබ සියලු ඉල්ලීම් වාර්තා කිරීමට පැතිකඩ මෙවලම - SET පැතිකඩ = 1 - භාවිතා නොකළ යුතුය, i.e. සාමාන්‍ය_ලොග් විචල්‍යය නිෂ්පාදන මාදිලියේ සහ අධික බරක් යටතේ භාවිතා කිරීම නිර්දේශ නොකරයි.

නිගමනය

ගැටළු සහගත විමසුම හුදකලා කිරීමට සහ සමස්ත කාර්ය සාධනය තක්සේරු කිරීමට විමසුම් පැතිකඩ ඔබට බොහෝ උපකාර කළ හැක. සංවර්ධකයාට ඔහුගේ යෙදුමේ MySQL විමසුම් ක්‍රියා කරන ආකාරය අධ්‍යයනය කළ හැකිය. mysqldumpslow මෙවලම ඔබට විමසුම් ලඝු බැලීමට සහ සැකසීමට උපකාර කරයි. ගැටළු සහගත විමසුම් හඳුනා ගැනීමෙන් පසුව, ඉතිරිව ඇත්තේ උපරිම කාර්ය සාධනය සඳහා ඒවා සුසර කිරීමයි.




ඉහල