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
4k
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
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
29
6.9k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
19
5.7k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
7
1.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
変化に強いテーブル設計の勘所 / Table design that is resistant to changes
soudai
PRO
68
19k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
PRO
50
25k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
PRO
38
34k
ソフトウェアエンジニアとしてキャリアの螺旋を駆け上がる方法 - 経験と出会いが人生を変える / Career-Anchor-Drive
soudai
PRO
20
6.9k
新婚19年目から学ぶ夫婦円満の正しい歩き方 / Life is beautiful
soudai
PRO
12
4.8k
Other Decks in Technology
See All in Technology
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
170
研究開発部メンバーの働き⽅ / Sansan R&D Profile
sansan33
PRO
3
21k
メッセージ駆動が可能にする結合の最適化
j5ik2o
9
1.7k
ブラウザ拡張のセキュリティの話 / Browser Extension Security
flatt_security
0
200
Contract One Engineering Unit 紹介資料
sansan33
PRO
0
9.7k
MAP-7thplaceSolution
yukichi0403
2
140
ローカルLLM基礎知識 / local LLM basics 2025
kishida
25
10k
都市スケールAR制作で気をつけること
segur
0
210
PostgreSQL で列データ”ファイル”を利用する ~Arrow/Parquet を統合したデータベースの作成~
kaigai
0
180
履歴テーブル、今回はこう作りました 〜 Delegated Types編 〜 / How We Built Our History Table This Time — With Delegated Types
moznion
2
2.7k
Master Dataグループ紹介資料
sansan33
PRO
1
4k
段階的に進める、 挫折しない自宅サーバ入門
yu_kod
1
130
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
2.9k
Building Adaptive Systems
keathley
44
2.8k
It's Worth the Effort
3n
187
29k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The Language of Interfaces
destraynor
162
25k
Why Our Code Smells
bkeepers
PRO
340
57k
GitHub's CSS Performance
jonrohan
1032
470k
Why You Should Never Use an ORM
jnunemaker
PRO
60
9.6k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ