キャッシュかインメモリーか? DBMSのメモリー管理アーキテクチャの違いと使い分け
オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド 第7回
この連載では、開発者の皆様がシステム・アーキテクチャやアプリケーション・コードをより洗練させるのに役立つデータベース・マネジメント・システム(DBMS)の基本を振り返り、実装に合った技術の組み合わせを解説します。今回は、DBMSエンジンのメモリー管理アーキテクチャの違いについて扱います。
はじめに
データは電源を切っても保存されるハード・ディスクやフラッシュ・メモリーに格納されています。しかしこれらのデバイスは低速なので高速なDRAMにデータを格納して処理します。DBMSのメモリー管理アーキテクチャはキャッシュをベースにするものとインメモリーをベースにするものに大別できます。これらにはやはり長所と短所があります。今回はメモリー管理アーキテクチャの違いによるトレード・オフとその用途、そして短所に折り合いをつける実装について見ていきましょう。
なお、本連載で例として挙げるデータベースはオラクルが提供しているものが多いですが、オラクル製品を使っていない方にも参考にしていただけるように解説していきます。
対象読者
この連載では以下の読者を想定しています。
- データ資産を活用する、新しいアプリケーションの構想や設計を担われる方
- データ基盤の運用を担われている方や、今後検討される方
- 新たに開発するアプリケーションの、最適なデータベースをお探しの方
- 目的別データベースから、価値ある情報を素早く引き出す検討をされている方
記憶デバイスのアクセス時間と容量
一般的に、コンピュータの記憶デバイスは階層構造を持っています。CPUの演算ユニットに近いところにある記憶デバイスほど短時間でのアクセスが求められます。しかしCPUの演算ユニットに近いところほど使用できる面積が狭いため、アクセス時間が増加することを許容すればより大容量の記憶デバイスが使用できます。
この図は2022年時点の記憶デバイスの典型的なアクセス時間と容量の関係を示しています。横軸はデバイスごとの容量で対数表示です。縦軸はデバイスへ1回アクセスするのにかかる時間でこちらも対数表示です。デバイスのモデルごとのアクセス時間と容量は製品によって数倍の幅がありますが、両対数グラフ上での位置の相対的な変動は小さなものです。
縦軸のアクセス時間の単位はナノ秒(ns)で記述していますが、1nsは1GHzの1クロック分の時間です。サーバー用途のCPUはだいたい2GHz(0.5ns/クロック)から4GHz(0.25ns/クロック)程度の周波数で動作していますので、この図は各デバイスのアクセスに要する時間がだいたいCPUの何クロック分なのかということを表しています。
電源を切ってもデータが保存される不揮発性デバイスは大容量ですがアクセスに時間がかかる傾向があります。2022年時点の3.5インチ・ハード・ディスク・ドライブ1台の容量は10TBを超えていますが、アクセス時間はCPUの数100万クロック分かかります。半導体記憶デバイスであるフラッシュ・メモリーでもまだ数万クロック分かかります。
データベースのデータは消失してはいけないため、ハード・ディスクやフラッシュ・メモリーなどの不揮発性デバイスに格納されています。しかし、これらの不揮発性デバイスはCPUの動作からするとはるかに低速であるため、ハード・ディスクやフラッシュ・メモリーよりも高速なDRAMにデータを移動させてそこを探索します。
この記事は参考になりましたか?
- オラクル技術エキスパートが紹介する 開発者のためのデータベース完全ガイド連載記事一覧
- この記事の著者
-
日下部 明(日本オラクル株式会社)(クサカベ アキラ)
日本オラクル株式会社でOracle Databaseを担当するエンジニア。主にOracle Real Application Clustersを中心とする高可用性構成や性能チューニングの問題解決およびコンサルティングに従事。著書に「これは使えるOracle新機能活用術」(翔泳社)。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
