本書は、企業の情報システムにおける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
頭の中で、流れがイメージができるまで再読必至。