2018年4月23日

この連休の読書にオススメの一冊「SQLパフォーマンス詳解」(割引コードあり)

最近、久しぶりにPostgreSQLのクエリチューニングをしていたのですが、その過程で「この本はぜひもっと多くの人に読んでもらいたい」と改めて思い出した一冊がありました。

それは、「SQLパフォーマンス詳解(原題:SQL Performance Explained)」という本です。
パフォーマンスチューニング、特にクエリチューニングについて説明する場合、その前提となる知識は広範なものになります。

そのため、自分が頑張って説明するよりも、優れたエキスパートのまとめたコンテンツを活用させてもらう方が、質・量ともに優れたインプットにしていただけるのではないか、と思うのです。

また、この「SQLパフォーマンス詳解」は非常に良い本であるにも関わらず、一般の出版社から出ているわけではないため、それほど積極的にプロモーションされているわけではなく、日本語版についても、(残念ながら)一般的な書籍ほど話題になることが無いように思います。

そういった理由により、本エントリではこの本について皆さんに知っていただくべくご紹介するとともに、著者のMarkus Winand氏から日本の読者の皆さんに「最大で半額」となる割引コードを提供いただけることになりましたので、その使い方についてご紹介したいと思います。

ゴールデンウィーク直前ですが、ぜひ連休中に読む一冊に加えていただければと思います。データベースのパフォーマンスについて、網羅的かつ本質的な理解が深まること、間違いのない一冊です。

■著者のMarkus Winand氏について


著者のMarkus Winand氏は、PostgreSQLを始めとするRDBMSのチューニングのエキスパート/コンサルタントとして有名な方で、「Use the Index, Luke!」というブログでお馴染みです。

データベースのパフォーマンスチューニングに興味のある方であれば、一度は目にしたことのあるブログではないかと思います。

また、以前、UberがPostgreSQLからMySQLに移行したというニュースが流れた時に、「On Uber’s Choice of Databases」というブログを書かれたことでも有名です。
このエントリは、当ブログでも翻訳して紹介させていただきました。



また、PostgreSQLのグローバルカンファレンスである「pgcon」にも度々登壇しており、パフォーマンスチューニングのエキスパートの観点から、さまざまな知見をコミュニティで共有しています。私も一度、pgconで氏の講演を直接聞いたことがあります。

このように、著者のMarkus Winand氏は、データベースのパフォーマンスについて、理論と実践のいずれの面から見ても第一人者の一人であると言えます。

■「SQLパフォーマンス詳解」について


「SQLパフォーマンス詳解」は、データベースのパフォーマンスについて、主にインデックスの観点から解説した本です。(目次については後述します)

もともとは英語の書籍だったのですが、少し前に日本語に翻訳されて、現在は日本語版を読むことができます。

対応するRDBMSとしては、主にOracle、MySQL、PostgreSQL、SQL Serverについて記載されています。

個人的には、本書は特に
  • 自分のWebアプリケーションのデータベースアクセスのパフォーマンスについて詳しく理解したい開発者の方
  • RDBMSのパフォーマンスやインデックスについて、網羅的かつ実戦的な知識を得たいDBエンジニア
  • システムの性能分析やデータベースのパフォーマンスチューニングを担う基盤系エンジニアやDBA
  • 今まで使ってきたRDBMSと違うRDBMSを使うことになった(なりそうな)DBエンジニア
といった方々にオススメの一冊だと思います。

というか、データベースのパフォーマンスやインデックスの設計方法について考える時、個々のRDBMS製品に特化した書籍は多少はあるかもしれませんが、ここまで網羅的かつ横断的に解説されている本を、私は他に見たことがありません。

前述した通り、著者のMarkus Winand氏はRDBMSのパフォーマンスおよびチューニングのエキスパートです。そんなエキスパートの知見と経験が詰まった一冊になっていますので、ぜひ読んでみていただければと思います。

なお、私は最近、本書に書かれていた知見を活用してSQLチューニングをした結果、とあるクエリのパフォーマンスが10万倍に改善しました。

■「SQLパフォーマンス詳解」目次


以下が「SQLパフォーマンス詳解」の目次になります。

如何に網羅的かつ実戦的な情報がまとまっている一冊であるか、目次を見るだけでも理解していただけるのではないかと思います。
  • 前書き ............................................................................................ vi
  • 1章 インデックスの内部構造 ............................................................... 1
    • インデックスリーフノード
    • 検索ツリー (Bツリー)
    • 遅いインデックス パートI
  • 2章 where句 ...................................................................................... 9
    • 等価演算子
    • 関数
    • パラメータ化クエリ
    • 範囲検索
    • 部分インデックス
    • OracleにおけるNULL
    • 処理しにくい条件
  • 3章 パフォーマンスとスケーラビリティ ............................................ 79
    • データ量がパフォーマンスに与える影響
    • システム負荷がパフォーマンスに与える影響
    • 応答時間とスループット
  • 4章 結合処理 .................................................................................... 91
    • 入れ子ループ
    • ハッシュ結合
    • ソートマージ
  • 5章 データのクラスタリング ........................................................... 111
    • フィルタ述語の意図的な使用
    • インデックスのみのスキャン
    • 索引構成表
  • 6章 ソートとグルーピング .............................................................. 129
    • インデックスを使ったorder by
    • ASC、DESCとNULLS FIRST/LAST
    • インデックスを使ったgroup by
  • 7章 部分結果 .................................................................................. 143
    • 最初のN行のみの選択
    • 次ページの取得
    • ページネーションのための窓関数の使用
  • 8章 データの変更 ........................................................................... 159
    • 挿入
    • 削除
    • 更新
  • A. 実行計画 ................................................................................. 165
    • Oracle
    • PostgreSQL
    • SQL Server
    • MySQL
  • 索引 ............................................................................................ 193

■割引コードの使い方


著者のMarkus Winand氏に「かくかくしかじかにより、SQLパフォーマンス詳解を紹介したい(ダジャレではありません)」と相談したところ、日本語版の読者に割引コードを発行していただけることになりました。

割引コードは「GW2018INDEX」です。

この割引コードは、
  • PDF版は 50% OFF (9.95ユーロ → 5.00 ユーロ)
  • 印刷版は 5% OFF (29.95ユーロ → 26.95ユーロ)
  • PDF+印刷版は 14% OFF (34.95ユーロ → 30.00 ユーロ)
  • 有効なのは 直販サイト のみ。
  • 有効期限は 5/10 まで
となっています。

使い方は、書籍の直販サイトに行き、

「割引コードを入力」をクリックして、割引コードを入力するだけです。


割引コードを入力すると、上記の割引価格が表示されますので、そのまま購入することができます。

■まとめ


本エントリでは、PostgreSQLのパフォーマンスチューニングにおいて参考にしていただきたい書籍、「SQLパフォーマンス詳解」についてご紹介してきました。

パフォーマンスチューニングに必要なのは、「RDBMSの仕組みについての知識」、「問題の合理的な切り分けのスキル」、「解決策の引き出しの多さ」なのではないかと思っています。そういった観点で見ると、本書はそれらを網羅的かつ実践的に得られる、他に類書が見当たらない非常に稀な一冊であると思います。

割引コードを使うと、特にPDF版は50% OFFという破格な値段になりますので、データベースのパフォーマンスチューニングに興味のある方には、これを機会にぜひ一度読んでみていただければと思います。

連休中に読み切れる分量だと思いますし、読んだ後、長期に渡って活用できる知見を得られる、絶対に後悔しない一冊になると思います。連休中の読書&スキルアップに、ぜひ活用いただければと思います。

では、また。

0 件のコメント:

コメントを投稿