データベースの限界性能を引き出す技術
~NoSQLに飛びつく前に知っておきたい原理と最新テクニック
2014年3月18日紙版発売
2014年3月18日電子版発売
山崎泰史,武吉佑祐 著
A5判/224ページ
定価2,948円(本体2,680円+税10%)
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文の処理フローを知る
この本に関連する書籍
-
平成29年度 データベーススペシャリスト 合格教本
試験に必要な知識と解法テクニックを本書1冊で完全網羅!概念データモデル,関係データモデル,SQL,DBMS関連技術など,頻出の用語・テーマをしっかり解説!難関の午後Ⅰ...
-
理論から学ぶデータベース実践入門 ―― リレーショナルモデルによる効率的なSQL
本書は,DBを使ったアプリケーション開発経験があるエンジニアを対象に,リレーショナルモデルを理解し,より効率的にDB設計を行い,適切にSQLを使いこなすために必要な...
-
平成27年度データベーススペシャリスト合格教本
情報処理技術者試験の「データベーススペシャリスト試験」を受験される方を対象とした参考書。綿密な解説により,試験対策だけではなくデータベースに関する知識や理解...
-
平成27年度 データベーススペシャリストパーフェクトラーニング過去問題集
情報処理技術者試験の「データベーススペシャリスト」試験の過去問題集。紙面4回・PDF2回で現制度の全試験を年度別に掲載。午前問題は見開き構成で,素早く「解く」「解...
-
はじめてのHadoop ~分散データ処理の基本から実践まで
「いままで数千時間かっていた処理が,100分の1以下の時間で終わるようになった」 など,大量/多種のデータを効率よく処理できる手段として注目されているHadoopの仕...
-
即戦力のOracle管理術 ~仕組みからわかる効率的管理のノウハウ
「なぜ,その操作が必要なのか?」 「こういう仕組みになっているからこうする」 という背景をきちんと押さえながら,Oracleを効率的に管理するための考え方やテクニ...
-
MySQL Cluster構築・運用バイブル ~仕組みからわかる基礎と実践のノウハウ
MySQLのストレージエンジンとして動作し,スケールアウトや高可用性のニーズに応えてくれるのがMySQL Cluster。RDBMSとNoSQL両方のインターフェイスを持つ「NewSQL」の...