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

[cover photo]
TOPICS
Programming
発行年月日
PRINT LENGTH
312
ISBN
4-87311-209-5
原書
High Performance MySQL: Optimization, Backups, Replication, Load Balancing & More
FORMAT

「例えば、何百万ものクエリを処理し、数台のサーバがダウンしても処理を継続できるようにするには、MySQLサーバのクラスタをどのようにセットアップすればよいのだろうか(「まえがき」より)」??本書は、MySQLによるアプリケーション開発者ならびにMySQL管理者が求める必須の知識や手法を深く掘り下げ、MySQLのパフォーマンスを最大限に引き出すためのさまざまな深い問題を解説する専門書である。MySQLの開発・運用に関する現実的な問題に重点を置き、それら問題や課題に対して実践的な考え方と解決の手法を示す。読者の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章 ストレージエンジン(テーブル型)
	2.1	MySQLのアーキテクチャ
	2.2	ロックと並行処理
		2.2.1 読み書きロック
		2.2.2 ロック範囲
		2.2.3 MVCC(マルチバージョン並行処理制御)
	2.3	トランザクション
		2.3.1 利点と欠点
		2.3.2 独立性レベル
		2.3.3 デッドロック
		2.3.4 トランザクションログ
		2.3.5 MySQLのトランザクション
	2.4	適切なエンジンを選択
		2.4.1 検討事項
		2.4.2 現実的な例
		2.4.3 テーブルの変換
	2.5	ストレージエンジン
		2.5.1 MyISAMテーブル
		2.5.2 Compressed MyISAMテーブル
		2.5.3 RAID MyISAMテーブル
		2.5.4 MyISAM Mergeテーブル
		2.5.5 InnoDBテーブル
		2.5.6 Heap(メモリ内)テーブル
		2.5.7 Berkeley DB(BDB)テーブル
3章 ベンチマーク
	3.1	ベンチマークの重要性
	3.2	ベンチマーク手法
	3.3	ベンチマークツール
		3.3.1 MySQLベンチマークスイート
		3.3.2 MySQL super-smack
		3.3.3 MyBench:筆者作のベンチマークツール
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章 サーバの性能チューニング
	6.1	性能を制限する要因
		6.1.1 ディスク
		6.1.2 メモリ
		6.1.3 ネットワーク
	6.2	RAID
		6.2.1 複数レベルの混合
		6.2.2 ハードウェアRAID対ソフトウェアRAID
		6.2.3 IDE対SCSI
		6.2.4 スレーブのRAID
	6.3	OS
		6.3.1 ファイルシステム
		6.3.2 スワップ
		6.3.3 スレッド
	6.4	解決方法
		6.4.1 I/Oのボトルネックの解決方法
		6.4.2 CPUのボトルネックの解決方法
		6.4.3 メモリのボトルネックの解決方法
		6.4.4 カーネルのボトルネックの解決方法
7章 レプリケーション
	7.1	レプリケーションの概要
		7.1.1 レプリケーションで解決できる問題
		7.1.2 レプリケーションで解決できない問題
		7.1.3 レプリケーションの性能
	7.2	レプリケーションの設定
		7.2.1 新しいサーバの設定
		7.2.2 既存のサーバの設定
	7.3	レプリケーションの内部の仕組み
		7.3.1 MySQL 3.23のレプリケーション
		7.3.2 MySQL 4.0のレプリケーション
		7.3.3 レプリケーションに関するファイルと設定
	7.4	レプリケーションのアーキテクチャ
		7.4.1 レプリケーションの規則
		7.4.2 構成例
	7.5	管理と保守
		7.5.1 監視
		7.5.2 ログの循環
		7.5.3 マスターの変更
		7.5.4 ツール
	7.6	一般的な問題
		7.6.1 スレーブのデータを変更
		7.6.2 サーバIDの重複
		7.6.3 壊れたログまたは一部のレコードが欠けたログ
		7.6.4 多量のデータを一括でロード
		7.6.5 依存関係を複製できない
		7.6.6 一時的なテーブルの消失
		7.6.7 バイナリログがトランザクションログに同期しない
		7.6.8 スレーブがまちがったマスターに接続
	7.7	レプリケーションの将来
		7.7.1 スナップショットの選別
		7.7.2 フェイルセーフなレプリケーション
		7.7.3 安全なマルチマスターのレプリケーション
8章 負荷分散と高可用性
	8.1	負荷分散の基礎
		8.1.1 MySQLとHTTPの負荷分散の相違
	8.2	設定上の問題
		8.2.1 状態検査
		8.2.2 サーバ選択のアルゴリズム
	8.3	クラスタのパーティション
		8.3.1 役割に基づくパーティション
		8.3.2 データに基づくパーティション
		8.3.3 フィルタとマルチクラスタのパーティション
	8.4	高可用性
		8.4.1 デュアルマスターのレプリケーション
		8.4.2 スタンバイマスターと記憶装置を共有
		8.4.3 商用製品による解決方法
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.4.1 ガイドライン
	10.5	ネットワークのセキュリティ
		10.5.1 ローカルホストからの接続だけに制限
		10.5.2 ファイアウォール
		10.5.3 DMZにMySQLを設置
		10.5.4 接続の暗号化とトンネル
		10.5.5 TCPラッパ
		10.5.6 ホストの自動的な遮断
	10.6	データの暗号化
		10.6.1 パスワードのハッシュ
		10.6.2 暗号化ファイルシステム
		10.6.3 アプリケーションレベルの暗号化
		10.6.4 ソースコードの変更
	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が特殊な意味を持つ