MySQL performance tuning seminārs

Šo sestdien Rīgā bija Software freedom day, kas notika LU Linux centrā un par ko informēju jau iepriekš. Pirms došanās uz pasākumu izjutu nelielu skepsi, jo pierakstīšanās procesā uz MySQL ātrdarbības skaņošanas semināru valdīja mērens bardaks, tas ir, sākumā tas bija kā visiem pieejams, tad pazuda, tad atkal uzradās, kā arī visu laiku mainījās semināra sākuma laiks, piedevām pēdējo izmaiņu piefiksēju tikai tāpēc, ka nejauši vēlreiz iepētīju pasākumu plānu. Bet nu “viss labs, kas labi beidzās”, un pasākums izvērtās gana interesants.

Semināru vadīja Jay Pipes un slaidi bija tāds kā apkopojums no viņa pēdējām abām prezentācijām, kas redzamas viņa mājaslapā Legend of Drunken Query Master: The Apprentice’s Journey un Join-fu: The Art of SQL – ZendCon 2008. Tātad tie, kas seminārā tādu vai citādu iemeslu dēļ nepiedalījās, var vismaz paskatīties galvenās idejas no tām. Lielākais pluss, protams, bija iespēja uzdot jautājumus un saņemt kompetentas atbildes. Ašākais no klausītājiem, kas pareizi atbildēja uz Jay Pipes jautājumu, savā īpašumā ieguva grāmatu High Performance MySQL, Second Edition. Vēl jāpiebilst, ka semināra pasniedzējs arī ir līdzautors grāmatai Pro MySQL.

Dažas pasākuma bildes var redzēt šeit.

Tā kā neesmu nekāds baisais MySQL specs un lietoju to tā sakot brīvajos brīžos, tad iespējams, ka mani iespaidi ir mazliet savādāki nekā tie, kas būtu radušies MySQL ikdienas lietotājiem, bet daži no tiem bija šādi:

  • Tika atgādināts par to, ka MySQLā ir daudz un dažādi tabulu tipi un tas, ka Jūs izmantojat tikai vienu no tiem, visdrīzāk nozīmē, ka Jūsu aplikācija nedarbojas optimāli. Ko tur piebilst, tieši tāpat ir arī, piemēram, Oraclē, bet cik vispār zin, ka Oraclē ir vairāki tabulu tipi, nemaz nerunājot par to, ka ir arī tos lietojuši?
  • Atgādināts, ka visa pamatā ir shēma un, ja tā ir izveidota neoptimāli, tad tādi būs arī Jūsu vaicājumi, un neviens pasaules optimizators Jums neko daudz nepalīdzēs. Atliek tikai piekrist.
  • Diezgan smagi tika spiests uz piemērotu minimālu datu tipu pielietošanu, lai vienā datu blokā pēc iespējas vairāk sapakotu ierakstus.
  • Vertikālā particionēšana – ja Jūsu tabula satur daudzas kolonas, no kurām tikai dažas tiek bieži izmantotas, tad sadalīt tabulu divās – vienā ar bieži izmantotajām kolonām, otrā attiecīgi retāk izmantotās, lai nepiesārņotu kešu. Tehnika, kuru nekur citur tā īsti neesmu redzējis iesakam, ja neskaita kādus ekstrēmus gadījumus ar blobu un clobu likšanu atsevišķās tabulās, lai tās neafektētu pamattabulas.
  • Atgādinājums par MySQL vaicājumu kešu (query cache), kurš noklusēti ir 0. Kešošanas algoritms gan ar nekādu dziļu inteliģenci neizceļas tāpēc jābūt uzmanīgam ar vaicājumu kešošanu, kas darbojas uz mainīgām tabulām.
  • Atgādinājums un piemērs par to, ka rakstot SQL jādomā kopās nevis ierakstos (think in sets not in rows). Atbalstu ar abām rokam un kājām!
  • Īss pārskats par Explain komandu un tās doto rezultātu.

Bija, protams, ne tas vien, bet ne jau visu var atcerēties un šo to no pārējā var redzēt augšminētajās prezentācijās. Pārskatot tagad slaidus, man piesaistīja uzmanību šajā uz beigām parādītās atskaišu iespējas kā ar vienkāršu SQLu (savienojumi un grupēšanas) iegūt sakārtojumus un tekošās summas (running total). Lai gan seminārā Jay Pipes teica, ka neko nezinot par analītiskajām funkcijām, šie ir tipiski analītisko funkciju piemēri, tikai realizēti bez tām. Atliek tikai piebilst, ka izmantojot analītiskās funkcijas, šos SQL teikumus varētu vismaz 3 reizes saīsināt 😉

3 Responses to MySQL performance tuning seminārs

  1. vai vēl kaut kur ir atsauksmes par šo pasākumu? Neizdevās pašam aizdoties, lai arī neesmu baigi lielās draudzības saitēs ar SQL, vairāk interesēja tieši biznesā izmantošanas iespējas – ko tajā lekcijas daļā stāstīja? varbūt zini? 🙂
    vispār daudz cilvēku bija??

  2. Gints Plivna saka:

    Uz neko citu es nebiju, tāpēc arī par tiem iespaidu nav. Varbūt kaut kas būs LU Linuxa lapā http://linux.edu.lv/ vai arī kādā no http://forge.mysql.com/wiki/Software_Freedom_Day_2008_Riga minētajām saitēm, kas ziņoja par pasākumu. Katrā ziņā tie ir tikai mani minējumi.
    Te viens arī ir uzrakstījis kaut ko minimāli par pasākumu, bet nu vēl mazāk nekā es 🙂
    http://bytec.vitanet.lv/?lapa=raksti&rakst_id=120
    Vispār tauta nebija pārāk daudz, cik nu es pa stikla durvīm pavēroju galveno notikumu. Un par to man arī tāds neliels izbrīns – interesants pasākums tepat pie mums, nekas nav jāmaksā, pat vēl kafiju dod un cilvēki tā so so… Var jau būt ka es skatījos pa durvīm nepareizajā brīdī 🙂

  3. Gints Plivna saka:

    Spriežot pēc šī
    http://php.lv/f/index.php?showtopic=11553&st=0&p=92077&#entry92077
    pasākums vēl turpinās arī 1dien un 2dien tikai tā arī nav saprotams, vai cilvēkus “no ielas” tur laiž iekšā vai nē 🙂

Komentēt