Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
SHOWROOMのDB負荷に対するキャッシュ運用のカクカクシカジカ
Search
shimizu-masaya
November 15, 2018
Programming
0
2.3k
SHOWROOMのDB負荷に対するキャッシュ運用のカクカクシカジカ
2018/11/15
ライブストリーミングHack #3 with SHOWROOM
https://mirrativ.connpass.com/event/106330/
shimizu-masaya
November 15, 2018
Tweet
Share
More Decks by shimizu-masaya
See All by shimizu-masaya
SHOWROOMエンジニアの裏側
otto0913
0
620
SHOWROOMの"最近"の負荷対策
otto0913
1
11k
SHOWROOMの泥臭い負荷対策
otto0913
1
2.2k
Other Decks in Programming
See All in Programming
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
450
AI 開発合宿を通して得た学び
niftycorp
PRO
0
100
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
200
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
260
Understanding Apache Lucene - More than just full-text search
spinscale
0
110
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
280
守る「だけ」の優しいEMを抜けて、 事業とチームを両方見る視点を身につけた話
maroon8021
3
850
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
730
モダンOBSプラグイン開発
umireon
0
100
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
180
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
230
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
110
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
310
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
1.9k
It's Worth the Effort
3n
188
29k
KATA
mclloyd
PRO
35
15k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
190
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
110
Leo the Paperboy
mayatellez
4
1.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
71
Transcript
4)08300.ͷ%#ෛՙʹର͢Δ Ωϟογϡӡ༻ͷΧΫΧΫγΧδΧ 4)08300.5FDI4UVEJP ࢤਫཧ࠸
ࣗݾհ ࢤਫཧ࠸ ͠Έͣ·͞ ུྺ ֶੜ࣌ιϑτΣΞֶΛઐ߈ %F/"ʹ৽ଔೖࣾɺιʔγϟϧήʔϜΩϡϨʔγϣϯϝσΟΞʹैࣄ 4)08300.ʹग़ ͖ͳݴ༿ ʮδμϯϥϧͷΑ͏ͳඒ͠͞ͳ͍͔Βɺ͕ͨͩΉ͠ΌΒʹؤுΔ͚ͩ͞ʯ
CZ1BWFM/FEWⒿE ʮటषͪ͘ΌͩΊͰ͔͢ʁʯCZ4BSJOB4PEB ʮແྉνΣΩձʯ
࠷ۙͷొஃͷհ 4USFBNJOH$POGFSFODF 4)08300.ͷz࠷ۙͷzෛՙରࡦ IUUQTTQFBLFSEFDLDPNPUUPTIPXSPPNGBMTF[VJKJOGBMTFGVIF EVJDF Φʔτεέʔϧͷؒʹ߹Θͳ͍ಥൃతͳෛՙʹରͯ͋͠Β͔͡ΊαʔόʔΛ૿ͯͪ͠ ߏ͑Δ Ԇ͕ͦ͜·ͰٻΊΒΕͳ͍৴Ͱੵۃతʹ$%/Λར༻
%#ෛՙʹର͢Δ Ωϟογϡӡ༻ͷΧΫΧΫγΧδΧ
ΧΫΧΫγΧδΧͱ ंϝʔΧʔͷ$.ΩϟϥΫλʔ ΞΠυϧͷָۂ Λলུͨ͠ࡍʹ۩ମతͳ༰ͷ༻ͱͯ͠༻͍ΒΕΔදݱ 4)08300.Ͱ%#ͷෛՙΛΧΫΧΫγΧδΧͳΩϟογϡͷ͍ํͰରࡦ ͍ͯ͠·͢ɻ ࠓ۩ମతͳ༰Λհ͠·͢
4)08300.Ͱར༻͍ͯ͠ΔΩϟογϡػߏ NFNDBDIFEαʔόʔ ϑΝΠϧΩϟογϡ ϓϩηεΩϟογϡ શͯͷαʔόʔɺશͯͷϓϩηεͰڞ௨ͷΛࢀরͰ͖Δɻ ωοτϫʔΫ*0͕͋Δɻ ಉ͡αʔόʔͷϓϩηεͰΛڞ༗Ͱ͖Δɻ ωοτϫʔΫ*0ͳ͍͕ɺϑΝΠϧ*0͕͋Δɻ ࠷ɻ ϓϩηε͝ͱʹΩϟογϡ͞ΕΔɻ
֎෦͔Βͷૢ࡞͕ࠔɻ 1 1 1 1 1 1 'JMF$BDIF .FNDBDIFE 1SPDFTT$BDIF
ͷߟ͑ΔΦεεϝͷΩϟογϡػߏ͍͚ ϙΠϯτ ߋ৽සɾλΠϛϯάΛߟྀ͢Δ w ϑΝΠϧΩϟογϡ ϓϩηεΩϟογϡ ͷଟஈΩϟογϡ w ͱʹ͔͘.Z42-αʔόʔʹϦΫΤετΛ ૹΒͤͳ͍
w ߋ৽ͷλΠϛϯάͰదͳέΞΛ w NFNDBDIFE w ϦΫΤετස͕͍ͷΩϟογϡ͠ ͳ͍ w దͳFYQJSF࣌ؒ w ߋ৽ͷλΠϛϯάͰDBDIFͷআPSߋ৽ Ϛελʔσʔλܥ Ϣʔβʔσʔλܥ ଟগͷԆɺζϨ͕ڐ༰͞ΕΔ߹ ԆζϨΛڐ༰ͨ͘͠ͳ͍߹
NFNDBDIFEͷӡ༻ςΫχοΫ
Ωϟογϡ͞ΕͯΕར༻ɺͳ͚Εऔಘͯ͠อଘ ϙΠϯτ ༻్͝ͱʹ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; ྫ ϥΠϒҰཡͷऔಘͳͲ ऴྃࡁΈͷϥΠϒ͕Ϧετʹؚ·ΕΔ߹͕͋ΔͷͰͦΕϑΟϧλͯ͠ϨεϙϯεΛฦ͢
σʔλ͕ߋ৽͞ΕͨΒΩϟογϡΛআ PSߋ৽ ͍ॴ ΩϟογϡʹΑΔԆΛճආ͍ͨ͠߹ Ϣʔβʔͷૢ࡞͕ଈ࣌ө͞Εͳ͍69ྑ͘ͳ͍ɻ NFNDBDIFE͚ͩͰͷอଘشൃϦεΫ͕͋Δ σʔλͷߋ৽࣌ʹΩϟογϡͷσʔλΛআ͢Δ͜ͱͰ࣍ճͷࢀর͕%#ʹ͘Α͏ʹ͢Δ $teng->update('update table_a set
hoge = 2 where id = 1'); $memd->delete($cache_key); # or $memd->set($cache_key, $new_obj, 30); ྫ ϧʔϜใͷऔಘͳͲ ϧʔϜ໊ͱ͔ߋ৽ͨ͠Βଈ࣌ʹө͞Εͯ΄ ͍͠
ಉ͡σʔλΛෳΩϟογϡͯ͠ෛՙࢄͰ͖ΔΑ͏ʹ͢Δ ͍ॴ ಛఆͷ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); } ਓؾԋऀʹ ϦΫΤετ͕ภΔ
ෳͷΩϟογϡػߏΛΈ߹Θͤͯར༻ ϙΠϯτ ෳࡶ͞ͱརศੑͷτϨʔυΦϑ 1 1 1 .FNDBDIFE 1SPDFTT$BDIF .Z42- 1
1 1 1 1 1 ϓϩηεΩϟογϡ͚ͩͷ ߹ɺϓϩηεͷ͚ͩ.Z42- ʹϦΫΤετ͕͘Δ NFNDBDIFEෛՙʹΑͬ ͯμϯ͢Δ͜ͱ͕͋Δ ଟஈΩϟογϡͷ֤ͰϦΫ ΤετΛϑΟϧλ͠ɺωοτ ϫʔΫ*0ͳͲܰݮ͢Δ Ωϟογϡ͕ෳͷʹ อଘ͞ΕΔͷͰɺҰ੪ߋ ৽ɺআۃΊͯࠔɻ ΩϟογϡΩʔΛมߋ͠ ࣮࣭ͯϦηοτ͕ݱ࣮త
·ͱΊ
·ͱΊ w 4)08300.Ͱར༻͍ͯ͠ΔΩϟογϡػߏΛ͝հ w NFNDBDIFE w ϑΝΠϧΩϟογϡ w ϓϩηεΩϟογϡ w
͍ํͷྫΛ4)08300.ͷࣄྫΛަ͑ͯհ w ߋ৽࣌ʹΩϟογϡআͰԆΛճආ w ಉ͡σʔλΛෳΩϟογϡͯ͠ෛՙࢄ w ଟஈΩϟογϡͷར༻ 4)08300.ɺϥΠϒετϦʔϛ ϯάʹݶΒͣ൚༻తʹ͑Δٕͩͱ ࢥ͏ͷͰɺ͝ࢀߟʹ͍͖ͯͨͩͭ͠ ͭɺͬͱ͍͍ํ๏͋Εڭ͑ͯ͘ ͍ͩ͞ʂҰॹʹษڧͤͯͩ͘͞͞ ͍ʂʂ
None
ϥΠϒετϦʔϛϯά 4)08300. ͳΒͰͷେม͞ w ͍͖ͳΓਓؾ৴͕͡·Δ w ͍͖ͳΓେ͖ͳऔΓΈ͕ܾ·Δ w ͍͖ͳΓ"1*ϦΫΤετ͕εύΠΫ͢Δ ίϯςϯπʹΑΔӨڹ͕େ͖͍
ߴෛՙͳίϯςϯπͷ߹ɺχϡʔεϝσΟΞ ʹऔΓ্͛ΒΕΔ͜ͱଟʑ͋ΓɺͦΜͳίϯ ςϯπͱ͖߹͑ΔͷΓ͕͍ϙΠϯτɻ ৴։࢝લʹʮαʔόʔམͪΔͷͰʁʯͱ͍ͬ ͨͭͿ͖Λݟ͚ͭΔͱzෛ͚ͣݏ͍zαʔόʔ Λzࢧ͑ͳ͖Όײz͕ൃಈͯ͠ΑΓΔؾͰΔɻ 8&#αʔόʔʹؔͯ͠৴αʔόʔಉ༷ʹ Φʔτεέʔϧ͕ؒʹ߹Θͳ͍ಥൃతͳߴෛՙ ͕ൃੜ͢ΔͷͰɺࣄલ४උɾ৺ߏ͕͑ඞཁ
ऴΘΓ ͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 4)08300.ʑ͍ͯ͠·͢ɻ ͦΜͳαʔϏεͱҰॹʹ͍ͨ͠ෛ͚ͣݏ͍ ͳΤϯδχΞΛืू͍ͯ͠·͢ʂ