本書は、企業の情報システムにおけるOS/ストレージ/ネットワークという重要なITインフラ技術を、タイトルのとおり絵(図)を多用して分かりやすく説明している解説書です。特徴は、データベースにおけるデータのI/O(入出力)、およびハードディスクやメモリの役割/動作に重点を置き、抽象的な技術概念を可視化している点。DB Magazine Sectionシリーズの人気書籍『絵で見てわかるOracleの仕組み』および『門外不出のOracle現場ワザ』の著者による、画期的な絵解き式の解説で、難解なインフラ技術が手に取るように理解できるはずです。実際の業務におけるシステム開発や保守運用にも活かせるノウハウを満載しています。
本書は月刊DB Magazineの特集記事3本を加筆/再編集し、書籍としてまとめたものです。
第1章 絵で見て分かるOS
プロセス/メモリの制御からパフォーマンス情報の見方まで
Section 1 DBサーバーにおけるOSの役割
はじめに
アプリケーションやDBMSの状態を読み取ってみよう
OSで処理が実行される仕組みと制御方法
CPU技術の進化とアプリケーションやDBMSとの関係を探る
今後CPUはどうなるのか?
まとめ
Section 2 システムの動きがよく分かる超メモリ入門
メモリの仕組み
DBMSのメモリの構造(一般論)
32ビットと64ビットでは扱えるサイズが変わる
仮想メモリと物理メモリの関係
スワップとページングは要注意
I/O性能にとって重要なファイルキャッシュとは?
メモリ情報の見方は難しい、でも基本はこう考える
まとめ
Section 3 より深く理解するための上級者向けOS内部講座
システムコールはOSの窓口
OSはI/Oをどう処理するのか
スタックでプロセスやスレッドの処理内容を推測
「セマフォ」とは?
OSにもロックがある
時間の変更は慎重に
OSの統計情報が記録されるタイミング
プロセスファイルシステムを知る
プロセスに通知や命令を行なう「シグナル」
クラスタソフトとOSの密接な関係
ハードウェアからOSへの通知を行なう「割り込み」
DBサーバーの定常監視で取得すべきOS情報とは?
まとめ
第2章 絵で見て分かるストレージ
DBMSから見たストレージ技術の基礎と活用
Section 1 アーキテクチャから学ぶストレージの基本と使い方
ディスクのアーキテクチャ
ストレージのインターフェイス
SANとNASはどこがどう違うのか
複数のディスクを組み合わせて信頼性を高めるRAID
物理的な複雑さを隠蔽するストレージの仮想化
ストレージにはどんな障害があるのか
同期I/Oと非同期I/O
書き込みI/Oと同期書き込み(書き込みの保証)
ライトキャッシュが効果的なアプリケーションとは
ファイルシステム
rawボリューム
アプリケーションやDBMSから見たファイルキャッシュ
RDBMSのI/O周りのアーキテクチャ
これからストレージはどうなっていくのか
そのほかの注目すべき機能
ストレージとOSの関係図
まとめ
Section 2 ディスクを考慮した設計とパフォーマンス分析
キャッシュの存在
スループット(I/O数)重視で考える
ディスクのI/Oネックを避ける設計
表とインデックスの物理ディスクは分けるべきか
ディスクの設計方針「S.A.M.E.」
DBシステムの耐障害性について
ディスクを含めたシステムのパフォーマンスについて
ストレージを利用する側でしか行なえない性能分析の方法
まとめ
第3章 絵で見て分かるネットワーク
ネットワークを利用する側としての通信の知識
Section 1 ネットワーク基礎の基礎―通信の仕組みと待ち行列
はじめに
パケットの受け渡し
ネットワークという単位で集約する
ネットワークの処理は階層構造
ネットワークのアドレス
DNSはどこで何をする?
TCPレイヤの役割
通信の開始からソケットを作るまで
タイムアウトと再送(リトライ)
待ち行列
まとめ
Section 2 システムの性能にも影響するネットワーク通信の仕組みと理論
WebシステムにおけるアプリケーションとDBMSとネットワーク
アプリケーションからネットワークはどう見えるのか?
ネットワークのリトライとアプリケーション
タイムアウトまで諦めない
帯域の制御
ネットワーク越しの接続処理
RSTパケット
負荷分散
DBMSで効果があるACKのチューニング
ファイアウォールとアプリケーションやDBMS
まとめ
Section 3 現場で活かせる性能問題解決とトラブルシューティングの王道
「接続できない」というトラブル
アプリケーションとネットワークの性能の関係
Webシステムにも帯域制御が必要
パケットキャプチャ
OSの統計情報
ネットワーク待ちはOSからどのように見えるか?
WANの性能
ネットワーク障害のテストの仕方
まとめ
付録 OracleデータベースはOS/ストレージ/ネットワークをこう使っている
OS関連ンポイント
ストレージ関連のポイント
ネットワーク関連のポイント
Column
プロセス数やスレッド数の上限とは?
コネクションプーリングとOS上のメリット
CPUの横取りができないとどうなるか?
リアルタイムクラスとは?
PCとマルチコア/マルチプロセッサ
コア(ダンプ)とは何なのか?
Linuxカーネル2.6の良いところ
なぜファイルキャッシュとスワップ領域のページングという正反対の機能があるの?
メモリリークって何?
現在のOSはアンバランス?
便利に使える?!かもしれないSTOPシグナル
OSに性能トラブルや性能限界はあるのか?
転送量のみがバスの性能指標か?
DBMSはどんなNASサーバー(NFS)でも使えるわけではない
ファイルシステムによって遅くなることがある?
大型ストレージの性能上限をある程度予測するには?
同一サーバー上でDBMSはTCP/IP通信できる?
帯域幅とアプリケーションの通信性能はイコールではない?
ショートパケットの考え方は重要
ftpとDBMSのプロトコルの転送効率
オートネゴシエーションのトラブル
トラブル時にパケットキャプチャするときの注意点
ネットワークエンジニアに情報提供で協力する
DBMSで非同期って大丈夫?
集中か分散か
Oracleではどんなエラーが出るか、どこを調べる?
TIPS
★★★上級者向け リソースの調整には注意
★★中級者向け 意外な方法によるバッチ処理のチューニング
★★★上級者向け アプリケーションやDBMSはメモリを返した。でもOSにはメモリが返っていないことがある?
★★★上級者向け スレッドセーフとは
★★中級者向け ハイパースレッドとCPU使用率の関係
★★★上級者向け DB屋だから分かる!OSが原因のトラブル例
★★★上級者向け 実際の接続の実装はどうなのか
syuu0822 さん
2018-12-14
OracleのDBエンジニアが書いたOS、ストレージ、ネットワークに関する本。タイトルとは裏腹に結構細かい内容まで説明してある。出版されたのは10年前だが、十分今でも通用する内容。DBエンジニアでなくとも、インフラについて勉強したい人にオススメ。
MATSUDA, Shougo さん
2018-04-21
OSについて改めて学ぶために読了。DBMSを具体例にOSの動きから、DBMSアプリケーションとOSの連動、さらにはネットワークレイヤでの連動動作を詳細に学べます。
Iron Patriot さん
2018-04-11
頭の中で、流れがイメージができるまで再読必至。