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

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

A5判/224ページ

定価(本体2,680円+税)

ISBN 978-4-7741-6364-2

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

「RDBMSだと大規模データをうまく扱えない」といわれ,NoSQLのような代替技術が生まれてきていますが,本当でしょうか?

ビッグデータ時代でもシステムの中核として依然重要なRDBMSの力を100%発揮できれば,開発や運用はもっとラクになります。

本書では,ストレージ,CPU,ネットワークといったあらゆる点から「なぜ,RDBMSは遅くなるのか?」と「どうすれば,性能を最大限引き出せるのか?」を徹底解説。Oracle Exadataなどの最新動向もふまえて,RDBMSの限界を引き出す最新常識を教えます。

こんな方におすすめ

  • 大規模データを扱う(ことに興味がある)方

著者の一言

「RDBMS」と聞くと,どういうイメージが浮かびますか?
「堅牢」「一貫性がある」「安心」といったよいイメージもあれば,「ブラックボックス」「レガシー」「ボトルネックになりやすい」といった悪いイメージもあるかもしれません。

リレーショナルデータベース管理システム(RDBMS)は,比較的古くから,システムの中核で利用されてきました。近年,モバイル端末をはじめとしたアクセス手段の増加によって,システム規模の大型化が進んでいます。また,「ビッグデータ」というキーワードで言われるように,これまで見たことがないほどの大規模データを扱うようになりました。

大規模化に伴い,システムの中心にいるRDBMSにて,ボトルネックが目立ってきています。RDBMSの弱点を補うような,さまざまな代替技術も生まれています。

今後は,RDBMSではなく,こういった代替技術を積極的に採用すべきなのでしょうか? RDBMSはオワコンなのでしょうか?

でも,すべてのことがRDBMSでできたら,開発や運用はきっと楽になると思いませんか?

本書では,RDBMS で大規模トランザクション・大規模データを扱う際に,ボトルネックとなるポイントやその理由,改善案を説明していきます。最初からRDBMS以外の選択肢を考えるのではなく,まずはRDBMSで対応するためのアイディアを示します。RDBMSですべてに対応できるかどうか,判断するための材料になれば幸いです。RDBMS の適用範囲を限界まで広げるために,皆さんのお手伝いをさせてください。

なお,本書では「Oracle Database」や,ハードウェアと組み合わせた統合型製品である「Oracle Exadata」を例に説明します。具体的なコマンド例や実装例も出てきます。しかし,根本的な考え方は,すべてのRDBMS共通であることを念頭に置いて書いていますので,普段の業務でOracle Database以外のものを扱っている方にも,ぜひ読んでいただきたいと思います。

進化しているハードウェアをうまく活用し,RDBMSのさまざまな機能も利用することで,RDBMSの適用範囲を広げ,システムの複雑性を下げ,開発・運用しやすいシステムを作り,みんながハッピーになることが願いです。RDBMSをあきらめないために,一緒に考えていきましょう。

それでは,よろしくお願いします!

目次

第1章 なぜ,今「RDBMSはダメだ」と言われるのか

1-1 昔はRDBMSがシステムの中心だった

  • RDBMSへの突っ込みが増えた
  • ハードウェアの進化を活用するには
  • コラム どこからが「大規模システム」か?

1-2 DBに求められる役割と問題点とは

  • データの保管庫
  • 少量データへ多数のアクセス手段を提供する
  • 大量データへ少数のアクセス手段を提供する
  • バッチで大量データを一括処理する
  • コラム ビッグサーバ,クラスタ化,一周してビッグサーバ時代に

1-3 アーキテクチャのすみわけがベストではない

  • 複数ソフトウェアを組み合わせた時のデメリットとは
  • RDBMSにソフトウェアを追加する好例とは

第2章 RDBMSのボトルネックと基本的なチューニングを知る

2-1 ボトルネックとは

  • ボトルネックの意味を知る
  • RDBMSにおけるボトルネックとは

2-2 レスポンスとスループットを正しく知る

  • レスポンスとスループットとは
  • レスポンスとスループットを向上させるには

2-3 ディスクI/Oボトルネックを解決する

  • ディスクI/Oボトルネックとは
  • ディスクI/Oボトルネックをチューニングする

2-4 CPUボトルネックを解決するには

  • CPUボトルネックとは
  • CPUボトルネックをチューニングする
  • コラム SPECintとは

2-5 ネットワークボトルネックを解決するには

  • ネットワークボトルネックとは
  • ネットワークボトルネックをチューニングする
  • コラム 光通信が電気通信より速いのは,光が電気より伝送速度が速いからではない

2-6 共有リソースの競合ボトルネックとは

  • 行ロックがボトルネックになる
  • リソース競合を減らすには

第3章 大規模システムではI/Oボトルネックが大半を占めている

3-1 I/Oボトルネックはなぜ発生するのか

  • HDDは相対的に遅い
  • 可用性にも配慮する

3-2 I/Oボトルネックが発生しにくいデータベースを設計する

  • より高速なディスクを使う
  • データベースから見えるディスクの本数を増やす
  • データベースサーバとストレージ間を広帯域のネットワークで結ぶ
  • コラム データを守るRAIDとRAIN

3-3 I/Oボトルネックの分析と対策

  • AWRレポートでI/Oボトルネックを分析する
  • I/Oボトルネックの影響を受けているSQLを特定する
  • バッファキャッシュを拡大する
  • iostatでI/Oボトルネックを分析する
  • コラム I/O関連の待機イベントは悪者にされがち

3-4 一歩進んだI/Oボトルネック解消法

  • 読み込みリクエスト数を減らす
  • 書き込みリクエスト数の減らし方

3-5 Oracle Exadataが実装しているI/O高速化機能を知る

  • Exadata Smart Scanとは
  • Exadata Storage Indexとは
  • ストレージとストレージサーバの違い

第4章 CPUボトルネックは使用率だけでは判断できない

4-1 CPU待ちはなぜ発生するのか

  • ディスクI/Oボトルネックの次に待っているもの
  • CPUボトルネックの本質を探る
  • コラム CPU使用率の監視は必要か

4-2 CPU使用率が低すぎる原因とは

  • DB負荷が低い
  • 他レイヤでのボトルネック
  • 特定コアでのボトルネック
  • コラム 草食系インフラ屋

4-3 RDBMSでの並列化のすすめ

  • 並列化を実装する
  • 並列化で生じる課題とは
  • コラム クロック数 vs コア数

4-4 CPU使用率が高すぎる時には

  • ボトルネックが存在しない
  • 特定SQLのCPU使用率が高い時には
  • 並列度が高すぎる
  • コラム 待機イベントだけ見ていてもわからない

4-5 リソースをマネジメントする

  • リソース・マネジメントのすすめ
  • リソース・マネジメントを実装する
  • コラム CPUボトルネックは説明しやすい

第5章 ネットワークボトルネックの傾向と対策

5-1 ネットワークボトルネックはなぜ発生するのか

  • ネットワークボトルネックとは
  • ネットワークボトルネックの発生パターンは2つある

5-2 ネットワークボトルネックを発見するには

  • 待機イベント発生の本当の理由を知る
  • パフォーマンス統計を活用する
  • UNIX系OSはコマンドで調べられる
  • 分析の手順
  • ラウンドトリップがボトルネックになっている時には

5-3 ネットワークボトルネックを改善する

  • 枯渇したネットワーク帯域を改善するには
  • 多すぎるラウンドトリップによるボトルネックを改善するには

第6章 リソース不足以外にもボトルネックが存在する

6-1 手元のリソースを使い切れていますか?

  • リソースを使い切れないパターンとは
  • ACIDとは
  • BASEとは
  • ACIDとBASEの違いを知る

6-2 ロック待ちを解消するには

  • 業務データのロック待ちとなるケース
  • 行ロックによる待機を解消する
  • 同一ブロック更新での待機を解消する
  • 表データの分け方を考える
  • コラム ダミーデータに注意しよう

6-3 データベース内部でもロック待ちが起こる

  • 採番処理での待機を解消する
  • 同じSQLの実行回数が増えることによる待機
  • コラム DBは統合すべきか? 分割すべきか?

6-4 チューニングが他レイヤに与える影響

  • 圧縮による影響を知る
  • 高速ディスクを利用すればいいのか
  • メモリを活用する
  • ボトルネックは移動する
  • チューニングという旅の終わりに

Appendix RDBMSのアーキテクチャ超概要

A-1 Oracle Databaseのアーキテクチャを知る

  • 記憶域を構成する要素とは
  • インスタンスの構成要素とは
  • SGAの構成とは
  • バックグラウンドプロセスのおもな役割を知る
  • PGAの役割とは

A-2 SQLの処理フローを見る

  • ボトルネック発生のメカニズムにも関連する
  • SELECT文の処理フローを知る

著者プロフィール

山崎泰史(やまざきやすし)

はじめに,1章,4章,6章を担当。
日本オラクル株式会社 テクノロジーコンサルティング統括本部 所属。
横浜生まれのテキサス育ち。ITインフラが大好き。Oracle Database一筋。最近は専らExadata。
ITに関わる人々が少しでも早く家に帰れるように,ITインフラに住まう魑魅魍魎と日々闘っている。
共著に『絵で見てわかるITインフラの仕組み』(翔泳社)がある。


武吉佑祐(たけよしゆうすけ)

2章,3章,5章,Appendixを担当。
日本オラクル株式会社 テクノロジーコンサルティング統括本部 所属。
福岡県出身。2009年,新卒として日本オラクル入社。
入社以来,おもにOracle Exadataの設計/構築/運用支援プロジェクトを手がけ,さまざまな業界のお客様にExadataのスピードを実感していただくべく,日々奮闘中。
趣味はゴルフ。シングルプレイヤーを目指して,日々奮闘中。
共著に『即戦力のOracle管理術 ~仕組みからわかる効率的管理のノウハウ』(技術評論社)がある。