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
JPOUG_12_20250417_LockFree.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Hidehiko ASAHI
April 29, 2025
Technology
110
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JPOUG_12_20250417_LockFree.pdf
Hidehiko ASAHI
April 29, 2025
More Decks by Hidehiko ASAHI
See All by Hidehiko ASAHI
FinJAWS_ECSーRDSProxy
asahihidehiko
0
150
FinJAWS_reinvent2025_recap_database
asahihidehiko
2
140
JPOUG_TTN_15_ADB-MCP_20260122_v1.0.pdf
asahihidehiko
2
51
FinJAWS_reinvent2024_recap_database
asahihidehiko
2
560
JPOUG_10_20241018_OracleDB_AWS_v1.3.pdf
asahihidehiko
2
3.4k
20240123_OracleCloud-ManagedDatabase
asahihidehiko
1
180
20240119_AWS-recap-Limitless-DB_v1.0
asahihidehiko
0
59
AWS_BlueGreenDemo
asahihidehiko
0
160
JPOUG Tech Talk Night #7 ASAHI
asahihidehiko
0
440
Other Decks in Technology
See All in Technology
41歳でAWSが好きすぎてITエンジニアになったおっさんの話
yama3133
1
730
Devsumi 2026 Summer 人もAIも使える共通基盤を事業の加速装置にする~デザインシステム運用に学ぶ組織レバレッジ~ 渡辺 凌央
legalontechnologies
PRO
1
280
インフラと開発の垣根を超えていき!〜元AWSインフラエンジニアがAWS開発で奮闘している話〜
hatahata021
3
390
Vポイント分析基盤におけるデータモデリング20年史
taromatsui_cccmkhd
4
710
OPENLOGI Company Profile for engineer
hr01
1
74k
【公開用】AI_Dev_Ex2026_AI_登壇資料
matsuritechnologies
PRO
1
460
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
1
1k
10年目を迎えた「ABEMA」がどのように AI 活用を推進して、AI 駆動開発にシフトしているのか / How ABEMA, entering its 10th year, is promoting the use of AI and shifting toward AI-driven development
miyukki
0
360
Alphaモジュール使っていいのかい!?いけないのかい!?どっちなんだいっ!?
watany
1
320
reFACToring
moznion
0
110
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
740
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
220
Featured
See All Featured
Everyday Curiosity
cassininazir
0
260
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
64
56k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
190
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Optimizing for Happiness
mojombo
378
71k
It's Worth the Effort
3n
188
29k
Designing for Timeless Needs
cassininazir
1
390
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
The Limits of Empathy - UXLibs8
cassininazir
1
530
Making Projects Easy
brettharned
120
6.7k
Being A Developer After 40
akosma
91
590k
The SEO Collaboration Effect
kristinabergwall1
1
510
Transcript
23ai新機能「ロックフリー予約」にみる 楽観的同時実行制御のコンセプト 【JPOUG Tech Talk Night #12】 2025年4月17日 野村総合研究所 朝日英彦
2 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
◼朝日 英彦(ASAHI Hidehiko) ⚫野村総合研究所 • 金融業界向けのシステム基盤設計・構築、特にデータベース周りのチューニング等 • 現在は保険業界向けのシステムモダナイズやクラウドマイグレ案件など ◼Oracle関連の資格など ⚫Oracle ACE Pro(Database) ⚫Oracle Master Platinum ⚫Oracle Database Cloud Administrator 2023 Certified Professional ⚫Oracle Autonomous Database Cloud 2023 Certified Professional ⚫Oracle Base Database Services 2023 Certified Professional ⚫My Oracle Support Community Most Valued Contributor 2022~2024 ◼その他クラウド・データベース関連の資格など ⚫Japan AWS Top Engineer (Database) 2022, 2023, 2024 ⚫AWS Community Builder (DATA) 2023~2024 ⚫AWS Certified Database – Specialty (Japan AWS All Certifications Engineer 2022~2024) ⚫Azure Database Administrator Associate ⚫Google Cloud Certified Professional Cloud Database Engineer ⚫情報処理技術者(データベース) 自己紹介
3 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
◼Oracle Database 23aiの新機能の一つにロックフリー予約機能があります ⚫ロックフリー予約では該当する行についてはコミット時にのみロックが取得される ◼一方、2024年のre:inventにてAWSが発表したAurora DSQLでも、楽観的同時実行 制御を採用しておりロックを取得せず低レイテンシにトランザクション処理が可能、となっ ています ◼似たような説明ですが、一見違いが良くわかりません。。 ◼また、今までOracle Databaseを利用する場合には「ロック方式」を利用してきたこともあ り、ピンとこない方も多いのではないかと拝察します ◼本セッションでは通常のOracle Databaseの仕組みを振り返りつつ、ロックフリー予約機 能と楽観的同時実行制御の概要紹介とその比較を行います はじめに
4 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
同時実行制御
5 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
トランザクションの同時実行制御 ◼そもそも同時が必要な理由って? ⚫並列に実行したほうが速い!! 出典:https://gihyo.jp/dev/serial/01/db-academy/000203
6 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
トランザクションの同時実行制御 ◼そもそも同時が必要な理由って? ⚫並列に実行したほうが速い!!けど・・? 出典:https://45kaku.com/itpassport_text_57-02/ 不整合!
7 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
トランザクションの同時実行制御 ◼そもそも同時が必要な理由って? ⚫ガードすることで不整合をなくす←悲観的同時実行制御 出典:https://45kaku.com/itpassport_text_57-02/
8 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
悲観的同時実行制御と楽観的同時実行制御のイメージ ◼悲観的同時実行制御 ⚫変更時にロックをかけて整合性を確保 出典:https://codezine.jp/article/detail/6764 悲観的同時実行制御 楽観的同時実行制御 ◼楽観的同時実行制御 ⚫変更確定時に確認することで整合性を確保
9 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
悲観的同時実行制御と楽観的同時実行制御 ◼悲観的同時実行制御 ⚫「転ばぬ先の杖」で、事前にロックして競合を防ぐが、待ち時間が発生する可能性がある ◼楽観的同時実行制御 ⚫「とりあえずやってみて、問題があればやり直す」方式で、競合がなければ高速だが、競合が多いと手戻りが増 える 比較項目 悲観的同時実行制御 (PCC) 楽観的同時実行制御 (OCC) 競合に対する仮定 競合は頻繁に起こる (悲観的) 競合は稀にしか起こらない (楽観的) ロック取得タイミング データアクセス前 基本的に行わない (コミット時に検証) 競合検出タイミング データアクセス時 (ロック取得試行時) コミット時 競合時の主な動作 ロック解放まで待機 ロールバックして再試行 再試行処理の実装が必要 パフォーマンス特性 競合が多い場合に有利 (待機コストはあるが、再試行少ない) 競合が少ない場合に有利 (ロックオーバーヘッドなし) デッドロック 発生の可能性あり 基本的に発生しない 適した環境 更新が多く、データ競合の可能性が高いシステム 読み取りが多く、データ競合の可能性が低いシステム、分 散システム
10 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
楽観的同時実行制御といえば・・・Aurora DSQL ◼DSQLの楽観的同時実行制御の概要 ⚫事前ロックを取得せず、コミット時にデータ整合性を確認 出典:https://engineering.dena.com/blog/2025/03/aurora-dsql_02_spanner/
11 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能
12 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能概要 ◼目的 ⚫在庫数、口座残高、予約枠など、頻繁に更新される特定の数値データ(ホットスポット)に対する 更新処理の競合を減らし、スループットとスケーラビリティを向上させること ◼仕組み ⚫テーブル作成時または変更時に、特定の数値列を RESERVABLE(予約可能列) として宣言 ⚫この予約可能列に対するUPDATE文(加算・減算など)は、トランザクション実行中に行ロックを取 得せず「更新の予約」として記録 ⚫複数のトランザクションが、ロック待機なしに同じ行の予約可能列に対して同時に予約を行うことが 可能 ⚫実際の行データの変更と、短期間の行ロック取得は、トランザクションが コミットされるタイミング に遅 延される ⚫コミット時に、予約された更新を適用した結果がCHECK制約などに違反しないか検証され、違反す る場合はトランザクションがロールバック ◼特徴 ⚫トランザクション実行中のロック待機を回避することで、特定の種類の更新が集中するワークロードに おいて高い同時実行性を実現
13 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能のイメージ図 ◼通常のOracleトランザクションとロックフリー予約機能を利用したトランザクション ◼ロックフリー予約は通常のOracle上のトランザクションとは違い、更新時にロックを取得しない! 「ロックフリー予約=楽観的同時実行制御」 出典:https://medium.com/@vbalebai/introduction-7998b2b68a51 通常のOracleトランザクション ロックフリー予約機能を利用したトランザクション
14 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼ロックフリー表の作成 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
15 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼ロックフリー表の属性 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
16 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼ジャーナル表の確認 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
17 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼トランザクションの実施(-10&-20) 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
18 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼別のトランザクションの実施(+20) 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
19 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼最初のトランザクション(-10&-20)のcommit 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
20 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能 ◼対象表へのアップデートで内部的には予約ジャーナルへのインサートなども実行されている 出典:https://qiita.com/asahide/items/b83c187eb3189714f9d2
21 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能とDSQLの動作の違い(の一部) ◼ロックフリー予約機能を利用した複数のトランザクション 出典:https://www.youtube.com/watch?v=h6YvDoBfeyg DSQLだとここが違う!
22 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約と楽観的同時実行制御の差分 項目 Oracle 23ai ロックフリー予約 楽観的同時実行制御 (OCC) 適用対象/粒度 特定のテーブルの特定の数値列 (RESERVABLE) に限定 列単位で指定 (PDBレベルでの利用可否を設定可能) (基本的には)データベース全体 実装メカニズム 行に更新の「予約(RESERVE)」情報を付与 予約列に付与されたジャーナルで制約検証を実施 読み取り時にデータバージョンを記録 コミット時にバージョンを比較して競合を検出 ロックの有無 トランザクション中の予約列更新はロックを取得しない トランザクション中は基本的にロックを取得しない 想定競合 主に同じ行の特定数値列への加減算更新の競合 Write/Write競合。 制約連携 CHECK制約など、Oracle固有の制約と連携 一般的な概念であり、特定のDB機能との密な連携は実装に 依存 ◼ロックフリー予約と楽観的同時実行制御の差分 • 特定の数値列のみが対象 ←影響範囲を絞れる • 基本的には既存のOracleの機能を内部で活用 ←ロック競合についての低減を指向 • 全体が対象 ←アーキテクチャに沿っての全体的な設計が必要 • 分散処理の機能で実装 ←ロック競合の低減とリージョン跨ぎなどの分散処 理での高速化を指向
23 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約機能の使いどころ
24 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約の使いどころ(既存の課題) ◼ロックフリー予約機能の前提は、特定の表の特定の数値列が対象 ◼高い競合が発生する数値データ ⚫口座残高 ⚫在庫引当 ⚫座席・チケット予約 ⚫etc・・
25 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約性能検証 By Oracle ◼在庫引当に対しての性能検証 出典:https://speakerdeck.com/oracle4engineer/technight71-oracle23c-new-feature-perf?slide=11
26 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
ロックフリー予約性能検証 By Oracle ◼在庫引当に対しての性能検証結果 出典:https://speakerdeck.com/oracle4engineer/technight71-oracle23c-new-feature-perf?slide=13
27 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
まとめ
28 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
23ai 新機能 ロックフリー予約 ◼特定の表の特定の数値列をジャーナル化することで、その列をロック対象 から外している(ように見える) →該当列の競合を避けることができるようになる →ジャーナル表へのインサートなども実行されるためクエリ毎の負荷は増加して いる →未コミットのタイミングでもクエリの結果整合性について評価はされる ◼楽観的同時実行制御とは全く別の仕組みで、ロック競合を回避することで競 合による待機を減らして高速化
29 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
おまけ
30 Copyright (C) Nomura Research Institute, Ltd. All rights reserved.
おまけ ◼優先トランザクション(Oracle Database 23ai新機能) ⚫優先度を高く設定したトランザクションが、低い設定のトランザクションをロー ルバックさせることができる機能! • セッションレベル:TXN_PRIORITY で設定 •LOW, MIDIUM, HIGH の三つが設定可能、デフォルトはHIGH • ロールバックさせるまでの時間を制御可能 •PRIORITY_TXNS_HIGH_WAIT_TARGET、 PRIORITY_TXNS_MIDIUM_WAIT_TARGETで設定可能 • 管理者によるテストモード:PRIORITY_TXNS_MODE •TRACKとROLLBACKを設定可能、TRACKはテストモード (分散トランやXAトランでも適用が可能) 出典:https://docs.oracle.com/cd/G11854_01/admin/managing-transactions.html https://blogs.oracle.com/oracle4engineer/post/ja-automatic-transaction-rollback-in-23c
None