書評「実践ハイパフォーマンスMySQL」

MySQLの入門書は数多くありますが、この本はそれらよりも一歩進んだ、中級書としての位置づけにある本です。

実践ハイパフォーマンスMySQL

実践ハイパフォーマンスMySQL

主にMySQLを用いたデータベースのチューニングに関することが書いてあります。設定ファイルの位置や設定方法なども事細かく書かれている点もGood。

また、データベースの鬼門であるインデックスの貼り方も詳細に説明されています。インデックスを上手に選択してくれないMySQL特有の問題やキチンとインデックスが貼れているかどうかの調べ方も載っています。

僕はまだ機会に恵まれていないので、データベースサーバーを複数台を使ったアプリケーションに出会っていないため、必要はないんですが、

実はまだ読み切れてないんですが、持っていて損はない一冊だと思います。

目次

  • 訳者まえがき
  • まえがき
  • 1章 基礎知識
    • 1.1 バイナリのインストール対ソースからコンパイル
    • 1.1.1 MySQL.comのバイナリ対ディストリビューションのバイナリ
      • 1.2 設定ファイル
        • 1.2.1 設定ファイルの場所
      • 1.2.2 設定ファイルの形式
      • 1.2.3 設定ファイルのサンプル
      • 1.2.4 設定の変更
    • 1.3 SHOWコマンド
      • 1.3.1 SHOW VARIABLES
      • 1.3.2 SHOW PROCESSLIST
      • 1.3.3 SHOW STATUS
      • 1.3.4 SHOW INNODB STATUS
  • 2章 ストレージエンジン(テーブル型)
  • 3章 ベンチマーク
  • 4章 インデックス
    • 4.1 インデックスの基礎
      • 4.1.1 インデックスの概念
    • 4.2 インデックスの構造
      • 4.2.1 Bツリーインデックス
      • 4.2.2 ハッシュインデックス
      • 4.2.3 Rツリーインデックス
    • 4.3 インデックスとテーブル型
      • 4.3.1 MyISAMテーブル
      • 4.3.2 Heapテーブル
      • 4.3.3 BDBテーブル
      • 4.3.4 InnoDBテーブル
      • 4.3.5 フルテキストインデックス
      • 4.3.6 インデックスの制限
    • 4.4 インデックスの保守
      • 4.4.1 インデックス情報の取得
      • 4.4.2 インデックス統計情報のリフレッシュ
  • 5章 クエリの性能
    • 5.1 クエリ処理の基礎
      • 5.1.1 クエリキャッシュ
      • 5.1.2 構文解析と分析と最適化
      • 5.1.3 EXPLAINによる調査
      • 5.1.4 実行
    • 5.2 オプティマイザの機能と特徴
      • 5.2.1 不十分な分散
      • 5.2.2 インデックスベースのソート
      • 5.2.3 あり得ないクエリ
      • 5.2.4 LIKE句対フルテキストインデックス
    • 5.3 遅いクエリの特定
    • 5.4 MySQLに与えるヒント
      • 5.4.1 結合順序
      • 5.4.2 インデックスの使用
      • 5.4.3 結果のサイズ
      • 5.4.4 クエリキャッシュ
    • 5.5 クエリの特殊なトリック
      • 5.5.1 1つのクエリを2つに分解
      • 5.5.2 ORの代わりにUNIONを使用
  • 6章 サーバの性能チューニング
  • 7章 レプリケーション
  • 8章 負荷分散と高可用性
  • 9章 バックアップと復元
    • 9.1 バックアップが必要な理由
      • 9.1.1 障害からの復旧
      • 9.1.2 監査
      • 9.1.3 テスト
    • 9.2 検討項目とトレードオフ
      • 9.2.1 ダンプ対ローモードのバックアップ
      • 9.2.2 オンライン対オフライン
      • 9.2.3 テーブル型と整合性
      • 9.2.4 記憶装置
      • 9.2.5 レプリケーション
    • 9.3 ツールと手法
      • 9.3.1 mysqldump
      • 9.3.2 mysqlhotcopy
      • 9.3.3 mysqlsnapshot
      • 9.3.4 InnoDB Hot Backup
      • 9.3.5 オフラインバックアップ
      • 9.3.6 ファイルシステムのスナップショット
    • 9.4 独自のバックアップスクリプトの作成
  • 10章 セキュリティ
    • 10.1 アカウントの基礎
      • 10.1.1 権限
    • 10.2 権限テーブル
      • 10.2.1 権限の検査
      • 10.2.2 userテーブル
      • 10.2.3 hostテーブル
      • 10.2.4 dbテーブル
      • 10.2.5 tables_privテーブル
      • 10.2.6 columns_privテーブル
    • 10.3 許可と取り消し
      • 10.3.1 許可の仕組み
      • 10.3.2 一般的な問題と制限
    • 10.4 OSのセキュリティ
    • 10.5 ネットワークのセキュリティ
      • 10.5.1 ローカルホストからの接続だけに制限
      • 10.5.2 ファイアウォール
      • 10.5.3 DMZMySQLを設置
      • 10.5.4 接続の暗号化とトンネル
      • 10.5.5 TCPラッパ
      • 10.5.6 ホストの自動的な遮断
    • 10.6 データの暗号化
    • 10.7 ルートディレクトリの変更
  • 付録A SHOW STATUSコマンドとSHOW INNODB STATUSコマンド
    • A.1 SHOW STATUSコマンド
      • A.1.1 スレッドと接続の統計情報
      • A.1.2 コマンドのカウンタ
      • A.1.3 一時的なファイルとテーブル
      • A.1.4 データアクセスのパターン
      • A.1.5 MyISAMのキーバッファ
      • A.1.6 ファイルディスクリプタ
      • A.1.7 クエリキャッシュ
      • A.1.8 SELECT
      • A.1.9 ソート
      • A.1.10 テーブルのロック
    • A.2 SHOW INNODB STATUSコマンド
  • 付録B mytop
    • B.1 概要
      • B.1.1 スレッド表示
      • B.1.2 コマンド表示
      • B.1.3 状態表示
    • B.2 mytopの入手
      • B.2.1 必要なソフトウェア
      • B.2.2 インストール
    • B.3 設定と使用方法
    • B.4 一般的な用途
  • 付録C phpMyAdmin
    • C.1 基本操作
    • C.2 実用的な例
      • C.2.1 ユーザ管理
      • C.2.2 単純なSQLコマンド
      • C.2.3 データのエクスポートとダウンロード
  • 索 引
  • コラム目次
    • サーバのハードウェアの購入
    • ソフトウェアによる解決方法
    • マルチマスターの負荷分散
    • NDBクラスタ
    • データベース固有のパスワード
    • パスワードのセキュリティ
    • MySQLではlocalhostが特殊な意味を持つ
O'Reilly Japan - 実践ハイパフォーマンスMySQL