background image

25. Îïòèìèçàöèÿ MySQL

MySQL ñåðâåð áóäåò ðàáîòàòü áûñòðåå, åñëè åìó âûäåëèòü áîëüøå ïàìÿòè

è ïðàâèëüíîå åå ðàñïðåäåëèòü. Äëÿ òîãî, ÷òîá îïðåäåëèòü êàêîé òèï òàá-

ëèö âû èñïîëüçóåòå ïðè ðàáîòå äîñòàòî÷íî îòêðûòü íóæíóþ áàçó äàííûõ

â phpMyAdmin è ïîñìîòðåòü íà ñòîëáåö Type ðÿäîì ñ êàæäîé òàáëèöîé.

Âñå èçìåíåíèÿ, êîòîðûå îïèñàíû íèæå, íóæíî äåëàòü â ôàéëå

/data/mysql/my.cnf â ñåêöèè [mysqld]. Ïðèìåð êîíôèãóðàöèîííîãî ôàéëà

ïðèâåäåí íèæå. Ïî óìîë÷àíèþ ýòîãî ôàéëà òàì íåò, òàê êàê MySQL ñåðâåð

íåïëîõî ðàáîòàåò è áåç íåãî, íî åñëè âàì íóæíî ïîìåíÿòü êàêèå-òî íàñòîéêè

 ñîçäàéòå åãî è äîáàâüòå òóäà íåîáõîäèìûå íàñòðîéêè.

25.1. Äèàãíîñòèêà

Äëÿ òîãî, ÷òî îòñëåäèòü, êàêèå çàïðîñû âûïîëíÿþòñÿ íà MySQL ñåðâåðå,

ìîæíî äîáàâèòü ñëåäóþùèå ñòðî÷êè:

log=/data/mysql/query.log

log_slow_queries=/data/mysql/slow-queries.log

long_query_time=2

log-long-format

Äèðåêòèâà log ôèêñèðóåò â ëîã ôàéëå /data/mysql/query.log âñå çà-

ïðîñû ê áàçå äàííûõ. Äèðåêòèâà log_show_queries ïîçâîëÿåò îòñëåæèâàòü

çàïðîñû, êîòîðûå âûïîëíÿëèñü äîëüøå ÷åì long_query_time ñåêóíä. Òàê-

æå â ýòîò ôàéë çàïèñûâàþòñÿ çàïðîñû, êîòîðûå ïðèâåëè ê ïîëíîìó ñêàíó

òàáëèöû (ò.å. íå áûëè èñïîëüçîâàíû èíäåêñû).

25.2. Îáùèå ïàðàìåòðû

max_connections=100

back-log=20

Íàñòðîéêà max_connections óêàçûâàþò, êàêîå êîëè÷åñòâî ïàðàëëåëü-

íûõ ñîåäèíåíèé ìîæåò îäíîâðåìåííî ïðèíèìàòü MySQL ñåðâåð. Íàñòðîéêà

back-log óêàçûâàåò êàêîå êîëè÷åñòâî ñîåäèíåíèé ìîæåò ñòîÿòü â î÷åðåäè

íåïðèíÿòûìè, ïðåæäå ÷åì MySQL ñåðâåð íà÷íåò âîîáùå îòêàçûâàòü â ïîä-

ñîåäèíåíèè.

25.3. Êåøèðîâàíèå çàïðîñîâ

query-cache-type = 1

query_cache_size = 10M

Íàñòðîéêè êýøèðîâàíèÿ çàïðîñîâ ïîçâîëÿþò óñêîðèòü ðàáîòó MySQL

çà ñ÷åò òîãî, ÷òî åñëè ïðèëîæåíèå ïîñûëàåò â áàçó äàííûõ àáñîëþòíî

èäåíòè÷íûå çàïðîñû, òî òîãäà îòâåòû íà ýòè çàïðîñû ìîãóò áûòü âîç-

âðàùåíû èç êýøà, áåç âûïîëíåíèÿ ñàìîãî çàïðîñà íà òàáëèöàõ. Ðàçìåð êýøà

ñ ðåçóëüòàòàìè ìîæíî èçìåíÿòü  â íàøåì ñëó÷àå ýòî 10 Ìáàéò.

92