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
Webサービスが成長するとロックで苦労する話
Search
soudai sone
PRO
February 22, 2017
Technology
6
4.1k
Webサービスが成長するとロックで苦労する話
MySQL Casual Talk #10と第19回 中国地方DB勉強会 in 米子の資料です
soudai sone
PRO
February 22, 2017
Tweet
Share
More Decks by soudai sone
See All by soudai sone
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.6k
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
34
8.5k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
20
8.2k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
8
3.6k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
変化に強いテーブル設計の勘所 / Table design that is resistant to changes
soudai
PRO
68
20k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
PRO
51
34k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
PRO
41
57k
ソフトウェアエンジニアとしてキャリアの螺旋を駆け上がる方法 - 経験と出会いが人生を変える / Career-Anchor-Drive
soudai
PRO
20
7.1k
Other Decks in Technology
See All in Technology
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
170
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
250
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
3
230
Tebiki Engineering Team Deck
tebiki
0
24k
GitHub Issue Templates + Coding Agentで簡単みんなでIaC/Easy IaC for Everyone with GitHub Issue Templates + Coding Agent
aeonpeople
1
260
マネージャー視点で考えるプロダクトエンジニアの評価 / Evaluating Product Engineers from a Manager's Perspective
hiro_torii
0
190
今日から始めるAmazon Bedrock AgentCore
har1101
4
420
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
350
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.6k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
330
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
410
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
320
We Have a Design System, Now What?
morganepeng
54
8k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
Test your architecture with Archunit
thirion
1
2.2k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
98
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
120
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Abbi's Birthday
coloredviolet
1
4.8k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
WebαʔϏε͕͢Δͱ ϩοΫͰۤ࿑͢Δ ୈճதࠃํ%#ษڧձJOถࢠ
What is it? ϩοΫઈରʹඞཁͰ͋Δ
What is it? ͔͠͠αʔϏε͕͢Δͱ ϘτϧωοΫͷݪҼʹͳΓ͍͢
What is it? ͦΜͳWebαʔϏε͋Δ͋Δ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹϩοΫͪ ̏ɹϦϑΝΫλϦϯά ̐ɹ·ͱΊ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹϩοΫͪ ̏ɹϦϑΝΫλϦϯά ̐ɹ·ͱΊ
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ32ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿηʔϧεΤϯδχΞ ॴଐɿגࣜձࣾ ͯͳʢMackerelνʔϜʣ ɹɹɹຊPostgreSQLϢʔβձ ɹɹɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ32ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿηʔϧεΤϯδχΞ ॴଐɿגࣜձࣾ ͯͳʢMackerelνʔϜʣ ɹɹɹຊPostgreSQLϢʔβձ ɹɹɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
Mackerel
ࣗݾհ ໊લɿીࠜɹେʢͦͶɹ͚ͨͱʣ ྸɿ32ࡀʢࡾਓͷࢠڙ͕͍·͢ʣ ৬ۀɿηʔϧεΤϯδχΞ ॴଐɿגࣜձࣾ ͯͳʢMackerelνʔϜʣ ɹɹɹຊPostgreSQLϢʔβձ ɹɹɹɹɹதࠃࢧ෦ ࢧ෦ ɹɹٕज़తʹLLܥݴޠͱ͔RDB͕͖Ͱ͢
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹϩοΫͪ ̏ɹϦϑΝΫλϦϯά ̐ɹ·ͱΊ
ϩοΫͪ ͬ͘͟Γͱͨ͠આ໌ ɹɹ!LLJEB͞Μͷࢿྉ͔ΒҾ༻
ste rt G n tn 1 ' 1 1 tn
L a p L J 6 P L P o gQ6 L GUL J t P S S S Q u L S L S L PG
gJL C r K n a osEK 1 pEK 41
' 2 5 7 A B G NSOMR n OUPJ eQ g * 0 = 1 = ; 1 = ; 0 I 'I I 'I I 'I I 'I 1 N g I 'I 41 ' N ' 0 TN K
L 8 n QS GJPS L U 1 0 '
1 0 1 0 * - ; 1 ; A = - ; S S - ; - ; - ; S S S
ϩοΫͪ ΈΜͳҰൠతͳΤϯδχΞ͔ͩΒ ϩοΫͷࣄͬͯΔͣ ˣ ϩοΫͷઆ໌ׂѪ G nPMJL G Q TP
TU 1 0 ' 0 S C S G * 1 * * =; * =; * SF -* * P MLN * * =; M9I M O M9I M O * * =; * * =; * =; * SF -* * P MLN R < > H IODTUCAEBG M9I M O M9I M O
ϩοΫͪ ओͳϩοΫͷछྨ w ഉଞ F9DMVEFE ϩοΫ w ڞ༗ 4IBSFE ϩοΫ
ϩοΫͪ ओͳϩοΫͷछྨ w ഉଞ F9DMVEFE ϩοΫ w ڞ༗ 4IBSFE ϩοΫ
ϩοΫରʹରͯ͠ɺଞͷΞΫηεΛҰېࢭ͢Δ ଞͷΞΫηεߋ৽ɾআɾࢀরશͯग़དྷͳ͍ ॻ͖ࠐΈϩοΫͱݺΕΔࣄ͋Δ
ϩοΫͪ ओͳϩοΫͷछྨ w ഉଞ F9DMVEFE ϩοΫ w ڞ༗ 4IBSFE ϩοΫ
ϩοΫରʹରͯ͠ɺࢀরҎ֎ͷॲཧΛېࢭ͢Δ ଞͷΞΫηεࢀর 4&-&$5 Λ͢Δ͜ͱ͕ग़དྷΔ ಡΈࠐΈϩοΫͱݺΕΔࣄ͋Δ
ϩοΫͪ ϩοΫ҉తʹऔ͍ͬͯΔ
ϩοΫͪ .Z42-Ͱओʹڞ༗ϩοΫΛऔΔ w +0*/ͱ͔αϒΫΤϦͱ͔ w ߋ৽ܥͱ͔ w Ұ෦ͷ"-5&3ͱ͔
ϩοΫͪ 1PTUHSF42-ओʹڞ༗ϩοΫΛऔΔ w 4&-&$5ͰϩοΫͱΔ w "-5&3จͱ͔%#ຖͰ݁ߏҧ͏ w ϨϓϦέʔγϣϯͷεϨʔϒଆҙ
ϩοΫͪ ͍ͭ͜Βઃܭ࣌ʹҙࣝ͢ΔϩοΫ
ϩοΫͪ ༷มߋʹΑΔ2VFSZͷมߋ
ϩοΫͪ ༷มߋʹΑΔ2VFSZͷมߋ ˣ */%&9షΒͣʹ+0*/ */%&9ͷޮ͔ͳ͍8)&3&۟
ϩοΫͪ ༷มߋʹΑΔߏͷมߋ
ϩοΫͪ ༷มߋʹΑΔߏͷมߋ ˣ আϑϥάΈ͍ͨͳฅΧϥϜ
ϩοΫͪ ࣌ؒܦաͱڞʹࠐ·ΕΔര
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹϩοΫͪ ̏ɹϦϑΝΫλϦϯά ̐ɹ·ͱΊ
ϦϑΝΫλϦϯά QFSGPSNBODF@TDIFNB
ϦϑΝΫλϦϯά QFSGPSNBODF@TDIFNB ˣ ͱΓ͋͑ͣ໎ͬͨΒ༗ޮԽ͠ͱ͚
ϦϑΝΫλϦϯά ੲσϑΥϧτͰ ༗ޮԽ͡Όͳ͔ͬͨ
ϦϑΝΫλϦϯά ੲσϑΥϧτͰ ༗ޮԽ͡Όͳ͔ͬͨ ࠷ۙ༗ޮʹͳͬͯΔ
ϦϑΝΫλϦϯά TZTTUBUFNFOU@BOBMZTJT
ϦϑΝΫλϦϯά TZTTUBUFNFOU@BOBMZTJT ˣ 2VFSZͷ࣮ߦճͱ͔ వΊͯ͘ΕΔͭ
TZTTUBUFNFOU@BOBMZTJT mysql> SELECT * FROM statement_analysis\G *************************** 2. row ***************************
query: SELECT `c` FROM `sbtest1` WHERE `id` = ? db: sbtest full_scan: exec_count: 23890 err_count: 0 warn_count: 0 total_latency: 2.36 s max_latency: 521.15 us avg_latency: 98.74 us lock_latency: 778.65 ms rows_sent: 23890 rows_sent_avg: 1 rows_examined: 23890 rows_examined_avg: 1 rows_affected: 0 rows_affected_avg: 0 tmp_tables: 0 tmp_disk_tables: 0 rows_sorted: 0 sort_merge_passes: 0 digest: 80295d1d2720d4515b05d648e8caa82f first_seen: 2016-07-12 17:04:40 last_seen: 2016-07-12 17:04:53
ϦϑΝΫλϦϯά TZTJOOPEC@MPDL@XBJUT
ϦϑΝΫλϦϯά TZTJOOPEC@MPDL@XBJUT ˣ lݱࡏzͷϩοΫΈ߹Θͤ 2VFSZҰཡ
TZTJOOPEC@MPDL@XBJUT mysql57> SELECT * FROM innodb_lock_waits\G *************************** 1. row ***************************
wait_started: 2016-07-12 17:49:06 wait_age: 00:00:13 wait_age_secs: 13 locked_table: `d1`.`user` locked_index: PRIMARY locked_type: RECORD waiting_trx_id: 8063 waiting_trx_started: 2016-07-12 17:49:06 waiting_trx_age: 00:00:13 waiting_trx_rows_locked: 1 waiting_trx_rows_modified: 0 waiting_pid: 320 waiting_query: SELECT * FROM user LIMIT 3 FOR UPDATE waiting_lock_id: 8063:146:3:2 waiting_lock_mode: X blocking_trx_id: 8062 blocking_pid: 321 blocking_query: NULL blocking_lock_id: 8062:146:3:2 blocking_lock_mode: X blocking_trx_started: 2016-07-12 17:49:06 blocking_trx_age: 00:00:13 blocking_trx_rows_locked: 3 blocking_trx_rows_modified: 0 sql_kill_blocking_query: KILL QUERY 321 sql_kill_blocking_connection: KILL 321 1 row in set (0.01 sec)
ϦϑΝΫλϦϯά ZPLV͞Μ͕ தࠃํ%#ษڧJOౡͰͯ͠Δ
ϦϑΝΫλϦϯά ಈըࢿྉ͋ΔͷͰੋඇ IUUQECTUVEZDIVHPLVHJUIVCJP FWFOUTFWFOUIUNM
ϦϑΝΫλϦϯά ҙ
ϦϑΝΫλϦϯά TZTJOOPEC@MPDL@XBJUT ྺ࢙Λ࣋ͨͳ͍
ϦϑΝΫλϦϯά TZTJOOPEC@MPDL@XBJUT ྺ࢙Λ࣋ͨͳ͍ ஔ͖ʹԿ͔ʹग़ྗ͠Α͏
ϦϑΝΫλϦϯά 4ʹు͍ͯ"84"UIFOBͰੳ
ϦϑΝΫλϦϯά ࠷ऴखஈ
ϦϑΝΫλϦϯά 4)08&/(*/&*//0%#45"564
ϦϑΝΫλϦϯά
ϦϑΝΫλϦϯά ਓྨ͕ಡΉʹͭΒ͍
ϦϑΝΫλϦϯά !NZpOEFS͞Μ͕ॻ͍ͯΔ IUUQTXXXTMJEFTIBSFOFUNZpOEFS TIPXJOOPECTUBUVT
ϦϑΝΫλϦϯά ࣍ճͷ.Z42-$BTVBM·Ͱʹ ಡΊΔΑ͏ͳΈ࡞Γ͍ͨʢ༧ఆʣ
ϦϑΝΫλϦϯά 1PTUHSF42-ʁ
ϦϑΝΫλϦϯά QH@TUBU@TUBUFNFOUT
ϦϑΝΫλϦϯά QH@TUBUTJOGP
ϦϑΝΫλϦϯά !LLJEB͞Μ͕ தࠃํ%#ษڧձJOԬࢁʢ͈́
ϦϑΝΫλϦϯά ࢀߟࢿྉ IUUQECTUVEZDIVHPLVHJUIVCJP FWFOUTFWFOUIUNM
ϦϑΝΫλϦϯά QH@TUBUT@SFQPSUFS
ϦϑΝΫλϦϯά !NBTVEBL[͞Μ͕ 1PTUHSF42-ษڧձͰʢ͈́
ϦϑΝΫλϦϯά ࢀߟࢿྉ IUUQRJJUBDPNNBTVEBL[ JUFNTCCBDBEE
ϦϑΝΫλϦϯά ͜ͷΜΛͬͯ ͷ2VFSZ܈Λඥղ͘
ϩοΫͪ ࣌ؒܦաͱڞʹࠐ·ΕΔര ݟ͑ͯ͘Δ
ϦϑΝΫλϦϯά ៉ྷͳϦϑΝΫλϦϯά w ࢀরͱߋ৽ͷಡΈࠐΈઌΛ͚Δ w ߋ৽ͷϘτϧωοΫΛ͚Δ w σʔλઃܭΛݟ͢ w దʹ*/%&9Λ׆༻͢Δ
ϦϑΝΫλϦϯά ҋͷਂ͍ϦϑΝΫλϦϯά w +0*/Λඇਖ਼نԽͰิ͏ w ֎෦Ωʔ੍Λ֎͢ w ͱΓ͋͑ͣΩϟογϡʹಥͬࠐΉ w ۃͷεέʔϧΞοϓ
͋͐͡Μͩ ̍ɹࣗݾհ ̎ɹϩοΫͪ ̏ɹϦϑΝΫλϦϯά ̐ɹ·ͱΊ
·ͱΊ ϩοΫେͳΈͷҰͭ
·ͱΊ 3%#ͷ w σʔλΛదʹकΔ w σʔλΛదʹऔΓग़͢ w σʔλΛదʹอଘ͢Δ
·ͱΊ ͔͠͠ϘτϧωοΫʹͳΓ͍͢
·ͱΊ ͰͲ͏͖ͬͯ߹͍͔ͬͯ͘
·ͱΊ wυΩϡϝϯτΛݟΔ wఆৗతʹࢹ͢Δ wదͳվળΛଓ͚Δ
·ͱΊ ಛʹϩοΫઃܭ͕େࣄ
·ͱΊ %#ͷΕͨࠒʹͬͯ͘Δ
·ͱΊ
ࢀߟࢿྉ ɾQPTUHSFTRMKQ4MBDL νϟοτϧʔϜ IUUQTQPTUHSFTRMIBDLFSTKQIFSPLVBQQDPN ɾNZTRMDBTVBM4MBDL νϟοτϧʔϜ IUUQTNZTRMDBTVBMTMBDLJOIFSPLVBQQDPN
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ