Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
トランザクション処理における ⾼競合状態の分析/cybozulabs-youth10-mas...
Search
Cybozu
PRO
March 31, 2021
Technology
420
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
トランザクション処理における ⾼競合状態の分析/cybozulabs-youth10-masumura
Cybozu
PRO
March 31, 2021
More Decks by Cybozu
See All by Cybozu
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
12
93k
新卒1年目QAが リリース基準の"なぜ"をたどってみた
cybozuinsideout
PRO
1
930
kintone リサーチ副部/UXリサーチャー 業務紹介
cybozuinsideout
PRO
0
200
私たちが『JaSST協賛』から『外部コネクト』チームになった理由
cybozuinsideout
PRO
0
610
LLMでもいつものテスト技術〜意外と半分はこれまでのテストでした〜
cybozuinsideout
PRO
1
1.2k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
1
1.7k
LLMアプリの品質保証
cybozuinsideout
PRO
1
900
技術広報チームに丸投げしない!「一緒につくる」スポンサー活動
cybozuinsideout
PRO
0
320
テクニカルライター (グループウェア) について
cybozuinsideout
PRO
0
320
Other Decks in Technology
See All in Technology
re:Invent初参加で変わったこと、2回目にやってみたいこと(JAWS-UG彩の国埼玉 #12)
mhrtech
2
210
Gemini Intelligence 入門 ― AppFunctions と Gemini Nano
takuroabe
0
250
大型犬好きによるPugの紹介
yamanoku
1
160
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
1
320
二歩目のフロントエンド・ウェブアクセシビリティ
camiha
2
540
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
440
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
940
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
290
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
2
280
How to Design Configuration for Rails Applications
willnet
1
750
コンテナ運用におけるネットワーク・コンテナコストの削減方法/How to Reduce Network and Container Costs in Container Operations
masakiokuda
1
140
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
The browser strikes back
jonoalderson
0
1.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
950
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Writing Fast Ruby
sferik
630
63k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
520
GraphQLとの向き合い方2022年版
quramy
50
15k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
500
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Marketing to machines
jonoalderson
1
5.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
930
Transcript
トランザクション処理における ⾼競合状態の分析 ⾇村康成 メンター 星野さん
はじめに 研究成果 データベースにおけるトランザクション処理について ・Backoffの性能向上について新たな⾒解 ・その発⾒から、Backoffにかわる新たな最適化⼿法を提案 1
トランザクションとは ・データベースに対する処理のまとまり。 ・複数のトランザクションを並列に処理したときに、結果はトランザクションを ⼀つずつ実⾏した時と等価になる必要がある。 どうやって処理する? TX TX TX TX TX
・ ・ ・ コア コア ・ ・ ・ メモリ 2
WLPH GDWD$ ฎ⌮% ฎ⌮& %[ UHDG $
&[ UHDG $ %[ &[ ZULWH $%[ ZULWH $&[ DATA TX1 TX2 >失敗 >やり直し 競合とは 2つ以上のTXが同じデータに同時にアクセスする と、どちらかをやり直さないといけない。 >余計なコストが⽣まれる。 Lost updateの例 3
近年のトランザクション処理の課題 >競合の回避 >すべての並⾏性制御法は、この問題を解決するために様々な⼯夫を提案している >Backoffはその⼀つ 4
Backoffとは Backoffは、 abort したトランザクションを⼀定時間 sleep させたあとに再実⾏ するという最適化 <従来考えられていたbackoffの仕組み> abort したトランザクションを即時再実⾏しては、そのトランザクションが扱うデータアイテムが他
のトランザクションによってロックが取られている可能性が⾼いため、そのトランザクションを時 間 をおいて再実⾏することでトランザクションの成功率を上げると考えられている。 >タイミング制御 5
TX1 TX2 DATA1をLock中 Abort やり直し、でもまだlock中… DATA1を読みたいけど lockが取られている 従来のBackoffの考え⽅ 6
TX1 TX2 DATA1をLock中 Abort やり直し、成功! Sleep Backoff Backoffは、タイミング制御 >> 本当にそうなのか
従来のBackoffの考え⽅ 7
検証 0 5x106 1x107 1.5x107 2x107 2.5x107 3x107 3.5x107 4x107
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Throughput[TPS] skew no backoff abort1 abort2 2つのabortにおいて、差が少ない。 タイミング制御では説明しきれない ・readするデータがすでに変更されてないか >abort1 ・read するデータが他のトランザクションに よって lock されていないか>abort2 8
仮説 >backoff が sleep によって単位時間ごとの起動 thread を減らし、 競合の可能性を低下させていると仮説 0 2x106
4x106 6x106 8x106 1x107 1.2x107 1.4x107 1.6x107 1.8x107 2x107 0.7 0.75 0.8 0.85 0.9 0.95 1 Throughput[TPS] skew silo 224 thread backoff thread adjust VNHZ WKUHDGDGMXVW䛻䜘䜛WKUHDGᩘ EDFNRII䛾㉳ືWKUHDGᩘ ᖹᆒ Sleepによるタイミング制御ではなく、Sleepによる並⾏thread数の低下が理由では? >実⾏ thread 数を調整することにより、 チューニングした backoff と同等の性能を出すことが可 能であると考えられる 9
BackoffはSleepによるタイミング制御ではなく、 Sleepによる並⾏thread数の低下が理由で性能が上がっている 10 成果1
原因:Cache-miss backoff は 4 つの socket で計 224thread を⽤いているのに対し、実⾏ thread
調整では、1 つの socket で thread がすべて収まり切っている thread adjust において、thread 数はそのままに 4 socket に均等に thread を 配置することで⽐較 0 1x106 2x106 3x106 4x106 5x106 6x106 7x106 8x106 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1 Throughput[TPS] skew backoff 1socket 4socket silo 224 thread 0 10 20 30 40 50 60 1 2 3 4 0 1x106 2x106 3x106 4x106 5x106 6x106 cache-misses rate Throughput[TPS] socket cache-misses rate Throughput (skew0.9_26thread) 11
Backoffはせず、 そもそもthreadの数と配置を最適化したほうが良いのでは 成果2 12
Thread-controlの効果 0 1x106 2x106 3x106 4x106 5x106 6x106 7x106 8x106
9x106 0.8 0.82 0.84 0.86 0.88 0.9 0.92 0.94 0.96 0.98 1 Throughput[TPS] skew thread adaptive backoff thread adjust 13
まとめ ・Backoff による性能向上の理由は、従来考えられていた「abort しやすいタイミングの回避」よ り、sleep することによる並⾏ thread 数の低下によって⼤きく性能が向上していることが新たに 判明 >>Backoffの性能向上について新たな⾒解
・thread locaity の観点から、少なくとも Silo においては backoff を⽤いるよりも実⾏ thread そ のものをワークロードに適した値に設定するほうが性能が向上する >>新たな最適化⼿法の提案 14