ablog

不器用で落着きのない技術者のメモ

「データベースの限界性能を引き出す技術 ~NoSQLに飛びつく前に知っておきたい原理と最新テクニック」の紹介

同僚が書いた本の紹介です。
パフォーマンスチューニングのエキスパートである著者が長年の経験で得たエッセンスを惜しみなく伝授してくれる高速道路のような一冊だと思います。ぶっちゃけ読んでいて「へ〜、知らなかった(^-^;」と思ったところがありました。

よくパフォーマンスチューニングは経験しないと身につかないと言われ、ある程度その通りだと思いますが、この本はエキスパートのノウハウが凝縮された効率よく学べる一冊だと思います。

NoSQLとRDBMSについての考察、ボトルネック、レスポンス、スループットとは何かという基礎的な概念の説明から始まり、ボトルネックはCPU、ネットワーク、ストレージといったハードウェアリソースや排他制御で保護されるメモリ上の共有データといったソフトウェアリソースにおいて発生し、どのように分析してチューニングすれば良いかが書かれています。

鈍器級の本に書かれているような重要な概念が、絵と平易な言葉でわかり易く説明されているので効率が良く学べる一冊だと思います。Oracle Database 以外でも通用する普遍的な考え方が書かれていますので、プログラマからインフラエンジニアまで、初心者からベテランまで幅広くオススメです。

例えば、I/OボトルネックについてはAWRレポートの Top N Event で db file sequential read などのI/O関連の待機イベントが上位に来ている場合は平均待機時間(Wait Avg(ms))、ヒストグラム(Wait Event Histogram)での待ち時間の分布の確認から OS レベルで iostat をどう見れば良いかまで具体的に書かれています。同様にCPUボトルネック、ネットワークボトルネックRDBMS排他制御で発生するボトルネックに関しても書かれています。

目次

以下、目次です。興味を持たれた方は本屋でパラパラっと中身を見てみてください。

第1章 なぜ,今「RDBMSはダメだ」と言われるのか
 1-1 昔はRDBMSがシステムの中心だった
 コラム どこからが「大規模システム」か?
 1-2 DBに求められる役割と問題点とは
 1-3 アーキテクチャのすみわけがベストではない

第2章 RDBMSのボトルネックと基本的なチューニングを知る
 2-1 ボトルネックとは
 2-2 レスポンスとスループットを正しく知る
 2-3 ディスクI/Oボトルネックを解決する
 2-4 CPUボトルネックを解決するには
 コラム SPECintとは
 2-5 ネットワークボトルネックを解決するには
 コラム 光通信が電気通信より速いのは,光が電気より伝送速度が速いからではない
 2-6 共有リソースの競合ボトルネックとは

第3章 大規模システムではI/Oボトルネックが大半を占めている
 3-1 I/Oボトルネックはなぜ発生するのか
 3-2 I/Oボトルネックが発生しにくいデータベースを設計する
 3-3 I/Oボトルネックの分析と対策
 3-4 一歩進んだI/Oボトルネック解消法
 3-5 Oracle Exadataが実装しているI/O高速化機能を知る

第4章 CPUボトルネックは使用率だけでは判断できない
 4-1 CPU待ちはなぜ発生するのか
 4-2 CPU使用率が低すぎる原因とは
 4-3 RDBMSでの並列化のすすめ
 4-4 CPU使用率が高すぎる時には
 コラム 待機イベントだけ見ていてもわからない
 4-5 リソースをマネジメントする
 コラム CPUボトルネックは説明しやすい

第5章 ネットワークボトルネックの傾向と対策
 5-1 ネットワークボトルネックはなぜ発生するのか
 5-2 ネットワークボトルネックを発見するには
 5-3 ネットワークボトルネックを改善する

第6章 リソース不足以外にもボトルネックが存在する
 6-1 手元のリソースを使い切れていますか?
 6-2 ロック待ちを解消するには
 6-3 データベース内部でもロック待ちが起こる
 コラム DBは統合すべきか? 分割すべきか?
 6-4 チューニングが他レイヤに与える影響

Appendix RDBMSのアーキテクチャ超概要
 A-1 Oracle Databaseのアーキテクチャを知る
 A-2 SQLの処理フローを見る