laacz.lv

Kaspara F. neoficiālā mājaslapa (Anno 1997)

Vai MySQL spēj dot analīzes?

Kamēr Tavs mazais blodziņš vai e-veikaliņš lēnām vago interenta āres ar saviem tris simtiem apmeklētāju dienā, nav par ko uztraukties. Bet, ja Tavam MySQL serverim ir savi daži simti pieprasījumi sekundē, no kuriem daudzi nav optimizēti dažādu apstākļu sakritības rezultātā, ir vērts sākt domāt. Provēt izrakt visu dažādas kvalifikācijas un dažādu cilvēku desmit gadus rakstīto kodu? Vai varbūt tomēr pieķerties lietai no otra gala?

MySQL ir milzums konfigurācijas parametru, ar kuru palīdzību atkarībā no servera izmantošanas veida var panākt milzīgu ātrdarbības pieaugumu. It sevišķi tas attiecas uz InnoDB. Ja esi nolēmis nopietni pie tā piestrādāt, tad nāksies vien ieguldīt darbu izpētē. Metodoloģija, protams, ir ļoti garš un plašs stāsts, savukārt, analīzei un paša servera uzturēšanai ir pieejami diezgan daudz labi rīki.


Manuprāt viens no labākajiem rīkiem ir vienmēr būs laba grāmata. Un MySQL pasaulē labākā grāmata ir High Performance MySQL (patreiz otrais izdevums). Ja Tev līdz šim ir šķitis, ka MySQL ir maza figņa, kura tur kaut kur griežas un nav jāpieskata, tad šī grāmata ikurāt ir domāta tādiem kā Tu. Pašam man tā ir izrotāta ar milzumu grāmatzīmītēm un tiek pāršķirstīta regulāri.

MySQL Enterprise. Ļoti dārgs pakalpojums no MySQL AB, kurš bez maksas tehniskā (un ne tikai) atbalsta sevī ietver arīdzan MySQL Enterprise Monitor, kura izcilās daļas ir MySQL Query Analyzer un MySQL Enterpsise Advisors. Pirmais rīks ir ļoti labs, lai veiktu vispārēju datubāzes noslodzes analīzi, pētot individuālus pieprasījumus vai to grupas. Otrais, savukārt, sniedz padomus par iespējamām nepilnībām MySQL vai paša servera konfigurācijā ar padomiem – kas un kā ir jāmaina, lai viss būtu labi. Tas viss tiek ietverts MySQL Enterprise pakalpojumā, kura cena ir sākot no 2 tūkstošiem dolāru gadā. Tas ir fakts – šis ir viskvalitatīvākais no pieejamajiem rīkiem.

Starp citu, viens no manuprāt būtiskākajiem plusiem ir tas, ka atšķirībā no MySQL Proxy (lai arī risinājums ir faktiski tas pats), šī produkta aģents ir pilnībā caurspīdīgs. T.i. – visas uz IP bāzētās pieejas paliek spēkā un tās nav jāmaina uz @localhost.

Kontrollbase – bezmaksas alternatīva iepriekšminētajam. Projekts ir salīdzinoši zaļš, diezgan bugains, taču ātri gūst popularitāti un arī briedums nāk tam visam līdzi. Biedru ambīcijas ir diezgan nopietnas, jo izskatās, ka viņi vairāk vai mazāk tēmē uz iepriekšējā produkta “fīčām”. Pamēģināju un domāju, ka tuvākā pusgada laikā darīšu to vēlreiz.

Nedrīkst piemirst vēl vienu nopietnu šī tirgus spēlētāju – MONyog. To, tiesa, neesmu mēģinājis, lai arī tas tiek stādīts līdztekus MySQL Enterprsie Monitor.

Savukārt, ja mēs runājam par vienkāršiem rīkiem, kas pamatā dod vienkāršu skaitlisku informāciju, tad to klāsts arī ir neaprobežojas ar vienu vienīgu.

Gana svaigs, bet oriģināls servera skaitliskās informācijas atainošanas rīks ir mycheckpoint. Tas principā ir viens pats nabaga paitona skripts, kurš paver iespēju ģenerēt daudz un dažādas statistikas. Savā ziņā varētu vilkt paralēles ar mazliet modernāku MRTG (neviens, tiesa, neliedz izmantot arī MRTG :P). Izstrāde notiek diezgan aktīvi, kā rezultātā projekts gūst nopietnas aprises un, šķiet, varētu apsavesties arīdzan ar monitorēšanas rīka iespējām.

Ļoti sens, bet aizvien bez maz vai must have rīks ir perlā rakstītais mysqlreport. Tas dara vienkāršu, bet ļoti noderīgu darbu – transformē MySQL statusa vērtības cilvēkam viegli uztveramā formātā.

Tīri no rīku viedokļa ikkatram būtu jāzin maatkit. Tas ir perl skriptu kopums, kuri ir orientēti neba nu uz vienkāršu lietotāju. Ar tiem var paveikt pašu vellu. Par to jaudu var pārliecināties, uzmetot acis vienam pašam rīkam – mk-query-digest, kas ļauj analizēt ne tikai MySQL logus, bet pat tcpdump savāktos datus.

Tas ir tīri par rīkiem, kurus es vairāk vai mazāk ikdienas darbā izmantoju. Kā tos pielietot, kādus secinājumus to darbības rezultātā veikt – tas paliek paša izmantotāja ziņā.

Ja monitoringa vajadzībām tiek izmantots Cacti, noteikti ekipējumā pienākas iegūt MySQL Cacti templates.

MySQL servera dziļākai uzlabošanai pavisam noteikti noderēs Percona Lab izstrādātie patchi (ielāpi), kas, starp citu, vakar tika oficiāli laisti klajā arī MySQL 5.1 sērijai. Nu, un, protams, arī Gūglei ir savi rīki un patchi MySQL serverim (pagaidām tikai 4.x un 5.0.37 versijai).

Visā visumā, pasaule ir pilna ar rīkiem, kas atvieglo vai bagātina ar piedzīvojumiem (atkarībā no roku liekuma rādiusa:) MySQL DBA dzīvi.

Nezinu, kā lai pietiekami uzsveru to, ka, pirms ķerties klāt savam serverim, nepietiek virspusēji iziet cauri tīklos atrodamajai informācijai. Viens konfigurācijas parametrs ietekmē desmit citus – sevišķi tas attiecas uz InnoDB. Lai sekmīgi operētu ar analīzes rezultātiem un ķertos pie uzlabojumiem, ir nepieciešams saprast arīdzan to, kas notiek aiz acīmredzamā. Tā teikt – problēmas cēloni.

Ne vienmēr pietiek iemest serverim ar atmiņu, ātrākiem diskiem un vairāk procesoriem (kas MySQL gadījumā ir atsevišķs stāsts). Piemēram, pie autoritatīviem avotiem ir lasīts par gadījumiem, kad operatīvās atmiņas dubultošana pat ir radījusi pretējo efektu – serveris ir kļuvis lēnāks.

Maksim

Loti aktuala tema man.
1. mysql tagad uz highloadiem loti biezhi dzivo ar memcache.
2. Pie videjiem 1,5 pieprasijumiem sekunde, izmantojam mytop, lidz parejiem tooliem ta ari neaizgajam, nebija laika.
3. Biezhas mysql bremzes: indeksi nepareizi salikti, lockojas uz lieliem delitiem.
4. Mysql krutijas pussgadu uz ssd, ieprekshejo atrumu nemeriju, bet kopa ar innodb ngb bufferu – parasti lido.
5. Lielaka tabula 15gb
6. es brinos ka cilveki perk oracle, kur ar csv failu pietiek (atbilde Runcim)

JanisB

Ja nu šī tēma ir oftopiku pilna – vai var prasīt, kur rādās tieksme dēvēt lasītājus (arī SMS u.c.) – “Tu”, tieši ar lielo burtu? Aizguvums no “You”? Konkrēti man (protams neesmu mēretalons) ne visai patīk, kad Tekstā Mani Šādi Izceļ.

japets

JanisB, “Tu” lietojums ir no latviešu valodas pareizrakstības pieklājības forma uzrunai vēstulēs.
Internetā sarakste tam var tikt pielīdzināta.
“Jūs” lietošana man personīgi nešķiet pieņemama.

laacz

atis, mysql slow loga patīkamāku analīzi var izveikt ar mk-query-digest – jamais pats tev sagrupē vaicājumus, sakārto tos pēc pieprasījumu skaita, kopējā, vidējā patērētā laika, utt. mysqldumpslow ir vienkārši dumps nevis analīzes rīks.

paksis

Artx,
Ja pareizi atceros, tad latviešu valodas uzrunas korekti raksta:
to, kas saistīts ar Tu – raksta ar lielo,
to, kas saistīts ar vienas personas uzrunu – Jūs (ar lielo),
to, kas saistīts ar vairākām personām – jūs (ar mazo).

laacz

atis, maatkit komplekts kā tāds ir iespēju ziņā pārbagāts. Tas pats mk-query-digest ir izmantojams deviņdesmit deviņos dažādos veidos, pie kam, var analizēt, kā jau norādīju, ne tikai pašus logfailus, bet arīdzan tcp/ip trafiku dzīvajā.

archaic

Nu Latvijas datu apjomi nav tādi, ka nevarētu lietot MySQL da jebkam. Man te griežas db ~15Gb, 3000+ vaicājumi sekundē, 100+ vienlaicīgas konekcijas. Un nekāda vaine, cpu loads 4kodolu dzelzim nav augstāks par 2.

Iesniegt savu viedokli

Atruna par moderāciju. Daži vārdi, var gadīties, ka ir iz melnās listes (viagra and stuff). Tādi komentāri tiek aizturēti, pirms parādās lapā. Ja Tavs komentārs neparādās uzreizi, būs vien jāpagaida, līdz es jamo izlasīšu. Protams, ka paturu tiesības sev netīkošos komentārus dzēst, iemeslu neminot.