Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SHOWROOMのDB負荷に対するキャッシュ運用のカクカクシカジカ

 SHOWROOMのDB負荷に対するキャッシュ運用のカクカクシカジカ

2018/11/15
ライブストリーミングHack #3 with SHOWROOM
https://mirrativ.connpass.com/event/106330/

shimizu-masaya

November 15, 2018
Tweet

More Decks by shimizu-masaya

Other Decks in Programming

Transcript

  1. ๻ͷߟ͑ΔΦεεϝͷΩϟογϡػߏ࢖͍෼͚ ϙΠϯτ ߋ৽ස౓ɾλΠϛϯάΛߟྀ͢Δ w ϑΝΠϧΩϟογϡ ϓϩηεΩϟογϡ ͷଟஈΩϟογϡ w ͱʹ͔͘.Z42-αʔόʔʹϦΫΤετΛ ૹΒͤͳ͍

    w ߋ৽ͷλΠϛϯάͰద੾ͳέΞΛ w NFNDBDIFE w ϦΫΤετස౓͕௿͍΋ͷ͸Ωϟογϡ͠ ͳ͍ w ద੾ͳFYQJSF࣌ؒ w ߋ৽ͷλΠϛϯάͰDBDIFͷ࡟আPSߋ৽ Ϛελʔσʔλܥ Ϣʔβʔσʔλܥ ଟগͷ஗ԆɺζϨ͕ڐ༰͞ΕΔ৔߹ ஗Ԇ΍ζϨΛڐ༰ͨ͘͠ͳ͍৔߹
  2. Ωϟογϡ͞ΕͯΕ͹ར༻ɺͳ͚Ε͹औಘͯ͠อଘ ϙΠϯτ ༻్͝ͱʹFYQJSFΛௐ੔͢Δ ελϯμʔυͳར༻ํ๏ɻ .Z42-ͳͲͷ%#ʹอଘ͞Ε͍ͯΔσʔλͱဃ཭ ஗Ԇ ͕ൃੜ͢Δ͜ͱ͕͋Δɻ ஗Ԇ͕໰୊ʹͳΒͳ͍Α͏ʹFYQJSFΛௐ੔͢Δ my $memd

    = Cache::Memcached::Fast->new(); my $value = $memd->get($cache_key); unless (defined($value)) { $value = _get_value(); $memd->set($cache_key, $value, 30); } print $value; ྫ ϥΠϒҰཡͷऔಘͳͲ ऴྃࡁΈͷϥΠϒ͕Ϧετʹؚ·ΕΔ৔߹͕͋ΔͷͰͦΕ͸ϑΟϧλͯ͠ϨεϙϯεΛฦ͢
  3. ಉ͡σʔλΛෳ਺Ωϟογϡͯ͠ෛՙ෼ࢄͰ͖ΔΑ͏ʹ͢Δ ࢖͍ॴ ಛఆͷLFZ΁ͷΞΫηε͕ूதͯ͠ෛՙ෼ࢄͰ͖͹͍৔߹ NFNDBDIFEͷϊʔυΛෳ਺༻ҙͯ͠΋ಛఆͷLFZʹϦΫΤετ͕ूத͢Δͱҙਤ௨Γʹ෼ࢄ ͞Εͳ͍ͷͰ޻෉͕ඞཁ my $cache_key = join(':', ('room',

    int(rand(3)))); my $value = $memd->get($cache_key); unless (defined($value)) { $value = _get_value(); $memd->set($cache_key, $value, 30); } $teng->update('update table_a set hoge = 2 where id = 1'); for my $i (0..2) { my $cache_key = join(':', ('room', $i)); $memd->delete($cache_key); } ਓؾԋऀʹ ϦΫΤετ͕ภΔ
  4. ෳ਺ͷΩϟογϡػߏΛ૊Έ߹Θͤͯར༻ ϙΠϯτ ෳࡶ͞ͱརศੑͷτϨʔυΦϑ 1 1 1 .FNDBDIFE 1SPDFTT$BDIF .Z42- 1

    1 1 1 1 1 ϓϩηεΩϟογϡ͚ͩͷ৔ ߹ɺϓϩηεͷ਺͚ͩ.Z42- ʹϦΫΤετ͕͘Δ NFNDBDIFE΋ෛՙʹΑͬ ͯμ΢ϯ͢Δ͜ͱ͕͋Δ ଟஈΩϟογϡͷ֤૚ͰϦΫ ΤετΛϑΟϧλ͠ɺωοτ ϫʔΫ*0ͳͲ΋ܰݮ͢Δ Ωϟογϡ͕ෳ਺ͷ૚ʹ อଘ͞ΕΔͷͰɺҰ੪ߋ ৽ɺ࡟আ͸ۃΊͯࠔ೉ɻ ΩϟογϡΩʔΛมߋ͠ ࣮࣭ͯϦηοτ͕ݱ࣮త
  5. ·ͱΊ w 4)08300.Ͱར༻͍ͯ͠ΔΩϟογϡػߏΛ͝঺հ w NFNDBDIFE w ϑΝΠϧΩϟογϡ w ϓϩηεΩϟογϡ w

    ࢖͍ํͷྫΛ4)08300.ͷࣄྫΛަ͑ͯ঺հ w ߋ৽࣌ʹΩϟογϡ࡟আͰ஗ԆΛճආ w ಉ͡σʔλΛෳ਺Ωϟογϡͯ͠ෛՙ෼ࢄ w ଟஈΩϟογϡͷར༻ 4)08300.ɺϥΠϒετϦʔϛ ϯάʹݶΒͣ൚༻తʹ࢖͑Δٕͩͱ ࢥ͏ͷͰɺ͝ࢀߟʹ͍͖ͯͨͩͭ͠ ͭɺ΋ͬͱ͍͍ํ๏͋Ε͹ڭ͑ͯ͘ ͍ͩ͞ʂҰॹʹษڧͤͯͩ͘͞͞ ͍ʂʂ
  6. ϥΠϒετϦʔϛϯά 4)08300. ͳΒͰ͸ͷେม͞ w ͍͖ͳΓਓؾ഑৴͕͸͡·Δ w ͍͖ͳΓେ͖ͳऔΓ૊Έ͕ܾ·Δ w ͍͖ͳΓ"1*ϦΫΤετ਺͕εύΠΫ͢Δ ίϯςϯπʹΑΔӨڹ͕େ͖͍

    ߴෛՙͳίϯςϯπͷ৔߹ɺχϡʔεϝσΟΞ ʹऔΓ্͛ΒΕΔ͜ͱ΋ଟʑ͋ΓɺͦΜͳίϯ ςϯπͱ޲͖߹͑Δͷ͸΍Γ͕͍ϙΠϯτɻ ഑৴։࢝લʹʮαʔόʔམͪΔͷͰ͸ʁʯͱ͍ͬ ͨͭͿ΍͖Λݟ͚ͭΔͱzෛ͚ͣݏ͍z΍αʔόʔ Λzࢧ͑ͳ͖Όײz͕ൃಈͯ͠ΑΓ΍ΔؾͰΔɻ 8&#αʔόʔʹؔͯ͠΋഑৴αʔόʔಉ༷ʹ Φʔτεέʔϧ͕ؒʹ߹Θͳ͍ಥൃతͳߴෛՙ ͕ൃੜ͢ΔͷͰɺࣄલ४උɾ৺ߏ͕͑ඞཁ