Column
ラッチをCPUより多くする――Oracleパフォーマンス最適化のヒント
Oracleデータベースのパフォーマンス最適化では、「ラッチはCPUの数より増やしても意味がない」とよく言われる。だが、実はそこにはうそが隠れている。どういうことか説明しよう。
「ラッチはCPUの数より増やしても意味がない」とはよく言われることだ。なぜか。CPUの数より多くのラッチを同時に使用することはできないからだ。まったく理にかなっているようだが、実はうそが隠れている。どういうことか説明しよう。
あなたが、札付きの凶暴な囚人が集められた警備の厳重な刑務所の所長だとしよう。部下の看守は20人で、それぞれ20人の囚人を担当している。大規模暴動を防ぐため、これら21人のグループは相互に隔離されている。また、万が一銃撃戦が起こる危険を減らすため、銃は5丁だけ装備され、20人の看守がこれらを共用しなければならない。刑務所長はこのほかに看守長を任命し、5丁の銃を看守に割り振る役割を任せている。看守はどんな状況でも持ち場を離れてはならず、ほかの看守を助けに行くことも許されない。囚人と格闘するのはもってのほかであるため、看守は銃なしでは、暴れる囚人に決して対応してはならず、1度に1人の囚人しか相手にしてはならない。
刑務所長はこうした管理体制に非常に満足していた。各囚人は確実に監視され、暴動の可能性は抑えられており、必要な銃の数は最少限にとどめられていたからだ。しかし、場合によっては、1人の看守が20人の囚人を扱うのが困難になる状況が起こるかもしれなかった。看守が5丁の銃の1丁を手にすることができたとしても、非常に危うい立場にあることに変わりはなかった。
刑務所長はそれを思うと夜もなかなか眠れなかった。彼は心の底では、いずれは看守の1人が20人の囚人に襲われることになるのではないかと心配していた。自分が作った管理体制のせいで看守が命を落とすかもしれないと毎晩悩んだ。そして彼は外部の力を借りようと決断し、高給取りのコンサルタントを起用して助言を求めた。コンサルタントは一言こう言った。「もっと看守を雇ってください」
刑務所長は面食らった。看守は1度に1人の囚人にしか対応してはならず、しかも、それは5丁の銃の1丁を持っている場合に限られるからだ。彼は尋ねた。「看守を増やして銃は増やさないんですか」。高給取りのコンサルタントは、「そうです」とだけ答えた。
刑務所長はすっかり困惑して、コンサルタントに疑問をぶつけた。「そんなばかな。たとえ囚人1人につき1人の看守を雇ったとしても、銃は5丁しかありません。銃がなければ、看守は囚人に対応できないんですよ」
高給取りのコンサルタントは、悠然と長いキューバ葉巻を取り出して火をつけ、ゆっくり2~3服吹かすと、おもむろに言った。「確かにそうです。現状では、もし看守が担当している囚人のうち、2人の『世話』が必要になったら、看守はその1人の世話しかできず、もう1人は放置されることになります。ですが、看守を増やせば、銃を持った看守が、世話が必要な囚人に対応できる確率が上がります」
刑務所長はコンサルタントの知恵に舌を巻き、こう言った。「なるほど。今は、看守が20人の囚人のうち1人に対応していたら、ほかにもう1人を相手にすることはできません。しかし、看守を増やせば、看守の1人が(銃を持って)1人の囚人に対応していても、別の看守が(同じく銃を持って)もう1人の囚人に対応できるわけですね」
こうして問題は解決され、高給取りのコンサルタントは、たっぷりボーナスを受け取った。
では、以上の話が、Oracleのラッチングとどのように関連しているかを見ていこう。この話のそれぞれの銃はCPUを、それぞれの看守はラッチを、それぞれの囚人はメモリ構造(例えば、キャッシュバッファチェーンの1つなど)を表している。この話では、5丁の銃(CPU)しか使用できないのは確かだが、この5丁の銃を、任意の囚人、つまりメモリ構造(例えば、ハッシュバケットチェーンの1つなど)に可能な限り迅速に割り当てるというところがミソだ。
Oracleでは、1つのラッチでメモリ構造の複数の部分(例えば、複数のキャッシュバッファチェーンなど)がカバーされることが多い。これは、2つのプロセスが、近接したメモリ構造にアクセスする必要があっても、1つのラッチで両方がカバーされているため、アクセスできないということを意味する。この問題の1つの解決策は、ラッチの数がCPUの数を大幅に上回るとしても、ラッチを増やすことだ。一般に、メモリ構造の数に対するラッチの数の比率を、1に近づけるのがよいと考えられている。そうすることで、任意のメモリ構造についてラッチが使用可能になる可能性が高まる。高給取りのコンサルタントが、銃が5丁しかないと分かっていても、看守の増員を提案したのはそのためだ。
具体的な例で言えば、ラッチをCPUの数より大幅に増やすのが効果的な場合の1つとして、キャッシュバッファチェーンラッチの場合がある。手短に説明しよう。
詳細は省くが、Oracleが「このブロックはバッファキャッシュにあるか」と問い合わせると、キャッシュバッファチェーンの1つにこの問い合わせが送られる。このチェーンを対象に順次検索が行われ、正しいバッファが探される。Oracle 9から、チェーンの数はブロックバッファの数の2倍強となっている。
キャッシュバッファチェーン(CBC)ラッチの数は、構成可能なインスタンスパラメータだ。各CBCラッチは、1つ以上のキャッシュバッファチェーンを保護する。つまり、カーネルコードは、特定のチェーンにアクセスする前に、そのチェーンをカバーする特定のCBCラッチを取得しなければならない。Oracle 9から、1つのCBCラッチは、場合によっては700以上のキャッシュバッファチェーンをカバーするようになった。複数のプロセスが、同じCBCラッチで保護されている1つ以上のチェーンにアクセスしようとすると、CBCラッチ競合が発生する。その解決策の候補の1つ(ほかにもたくさんある)が、CBCラッチを増やすことだ。
なぜか。ラッチを増やせば、1つのラッチが保護するチェーンの数が減るため、取得しなければならないラッチを取得できる可能性が大きくなるからだ。実のところ、この一般的な解決策は、CPUの数に着目したものではない。複数のプロセスが同じラッチを要求する可能性を減らすという発想に基づいているのである。
従って、Oracleのプロセスは、CPUの数より多くのCBCラッチを要求しないかもしれないが、CBCラッチをCPUの数より増やすのは、非常にいいアイデアだ。
以上の説明が参考になるとともに、Oracleの内部の仕組みに改めて関心を持っていただくきっかけになれば幸いだ。
本稿筆者のクレイグ・シャラハマー氏は、IT業界で18年以上の経験を持つ。オラパブの社長として、Oracleベースのシステムの包括的なパフォーマンス最適化(事前および事後の)を実践し、その方法を教育することで、Oracleパフォーマンス管理者を支援することを目指している。同氏は教育コースの開発、提供に加えてコンサルタントの仕事もしている。コンサルタントとして、画期的なパフォーマンス管理製品の開発にかかわった経験を持つほか、Oracleに関する書籍の出版や技術レビュー記事の執筆、さまざまなOracleカンファレンスでの基調講演を行っている。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[o9ソリューションズ・ジャパン株式会社] 「改正物流効率化法対策」徹底解説 総物流費を抑制するサプライチェーン戦略 -
製品資料
[o9ソリューションズ・ジャパン株式会社] 「サプライチェーン最適化」実践ガイド:効果的な意思決定を実現する秘訣とは? -
製品資料
[株式会社リンプレス] 非デジタル/IT人材を「自走するDX推進者」に変えるための育成ロードマップ -
市場調査・トレンド
[ワンアイルコンサルティング株式会社] AI時代の組織設計:「判断と責任」を人に残すための2つの原則とは? -
技術文書・技術解説
[ワンアイルコンサルティング株式会社] システムの保守がモダン化を阻む? 「変えない判断」から脱却する方法とは
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「完璧な設計」なのに3000万円溶けた AWSの失敗事例から学ぶ3つの教訓
-
2
パナソニックが国内製造26拠点のERPを「SAP S/4HANA」に統一 アドオン7割削減
-
3
「AIバブル」は崩壊するのか? 熱狂の後に来る“尻拭い”と4つの防衛策
-
4
Microsoft製品でここまで自動化できる 情シスがやめられる手作業10選
-
5
守るべきは「開発者のフロー状態」 AIによる生産性改善の6施策
-
6
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
7
「データストレージの活用方法」に関するアンケート
-
8
全社標準「Copilot」にダメ出し? 現場の8割が不満を抱く“致命的な欠点”
-
9
「企業内サーバ環境の利用実態」に関するアンケート
-
10
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
ホワイトペーパーランキング PR
-
1
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
2
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
3
生成AIで文書活用を進めるには? 効率化と安全性をどう両立する
-
4
Windows PCとMacの選択制で生産性向上 LINEヤフーが実践する運用管理方法とは
-
5
DX/AI投資の壁を突破、現代の最高財務責任者が直面する課題と克服のヒント
-
6
「Google Workspace」活用事例34選、先進の生成AIによる組織変革の全貌
-
7
「人員を増やす」という選択肢はない 情シスが負の連鎖から抜け出すには?
-
8
Linuxのスキルを証明する“激推し”の認定資格はこれだ
-
9
「問題が深刻化しやすいプロジェクト管理」から脱却する方法とは?
-
10
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー