MySQL 8.0 リファレンスマニュアル


第 8 章 最適化

目次

8.1 最適化の概要
8.2 SQL ステートメントの最適化
8.2.1 SELECT ステートメントの最適化
8.2.2 サブクエリー、導出テーブル、ビュー参照および共通テーブル式の最適化
8.2.3 INFORMATION_SCHEMA クエリーの最適化
8.2.4 パフォーマンススキーマクエリーの最適化
8.2.5 データ変更ステートメントの最適化
8.2.6 データベース権限の最適化
8.2.7 その他の最適化のヒント
8.3 最適化とインデックス
8.3.1 MySQL のインデックスの使用の仕組み
8.3.2 主キーの最適化
8.3.3 SPATIAL インデックス最適化
8.3.4 外部キーの最適化
8.3.5 カラムインデックス
8.3.6 マルチカラムインデックス
8.3.7 インデックスの使用の確認
8.3.8 InnoDB および MyISAM インデックス統計コレクション
8.3.9 B ツリーインデックスとハッシュインデックスの比較
8.3.10 インデックス拡張の使用
8.3.11 生成されたカラムインデックスのオプティマイザによる使用
8.3.12 不可視のインデックス
8.3.13 降順インデックス
8.3.14 TIMESTAMP カラムからのインデックス付きルックアップ
8.4 データベース構造の最適化
8.4.1 データサイズの最適化
8.4.2 MySQL データ型の最適化
8.4.3 多数のテーブルの最適化
8.4.4 MySQL での内部一時テーブルの使用
8.4.5 データベースおよびテーブルの数に対する制限
8.4.6 テーブルサイズの制限
8.4.7 テーブルカラム数と行サイズの制限
8.5 InnoDB テーブルの最適化
8.5.1 InnoDB テーブルのストレージレイアウトの最適化
8.5.2 InnoDB トランザクション管理の最適化
8.5.3 InnoDB の読み取り専用トランザクションの最適化
8.5.4 InnoDB redo ロギングの最適化
8.5.5 InnoDB テーブルの一括データロード
8.5.6 InnoDB クエリーの最適化
8.5.7 InnoDB DDL 操作の最適化
8.5.8 InnoDB ディスク I/O の最適化
8.5.9 InnoDB 構成変数の最適化
8.5.10 多くのテーブルのあるシステムに対する InnoDB の最適化
8.6 MyISAM テーブルの最適化
8.6.1 MyISAM クエリーの最適化
8.6.2 MyISAM テーブルの一括データロード
8.6.3 REPAIR TABLE ステートメントの最適化
8.7 MEMORY テーブルの最適化
8.8 クエリー実行プランの理解
8.8.1 EXPLAIN によるクエリーの最適化
8.8.2 EXPLAIN 出力フォーマット
8.8.3 拡張 EXPLAIN 出力形式
8.8.4 名前付き接続の実行計画情報の取得
8.8.5 クエリーパフォーマンスの推定
8.9 クエリーオプティマイザの制御
8.9.1 クエリー計画評価の制御
8.9.2 切り替え可能な最適化
8.9.3 オプティマイザヒント
8.9.4 インデックスヒント
8.9.5 オプティマイザコストモデル
8.9.6 オプティマイザ統計
8.10 バッファリングとキャッシュ
8.10.1 InnoDB バッファプールの最適化
8.10.2 MyISAM キーキャッシュ
8.10.3 プリペアドステートメントおよびストアドプログラムのキャッシュ
8.11 ロック操作の最適化
8.11.1 内部ロック方法
8.11.2 テーブルロックの問題
8.11.3 同時挿入
8.11.4 メタデータのロック
8.11.5 外部ロック
8.12 MySQL サーバーの最適化
8.12.1 ディスク I/O の最適化
8.12.2 シンボリックリンクの使用
8.12.3 メモリーの使用の最適化
8.13 パフォーマンスの測定 (ベンチマーク)
8.13.1 式と関数の速度の測定
8.13.2 独自のベンチマークの使用
8.13.3 performance_schema によるパフォーマンスの測定
8.14 サーバースレッド (プロセス) 情報の確認
8.14.1 プロセスリストへのアクセス
8.14.2 スレッドのコマンド値
8.14.3 一般的なスレッドの状態
8.14.4 レプリケーションソーススレッドの状態
8.14.5 レプリケーション I/O スレッドの状態
8.14.6 レプリケーション SQL スレッドの状態
8.14.7 レプリケーション接続スレッドの状態
8.14.8 NDB Cluster スレッドの状態
8.14.9 イベントスケジューラスレッドの状態

この章では、MySQL のパフォーマンスを最適化する方法について説明し、例を示します。 最適化には、いくつかのレベルでの構成、チューニング、およびパフォーマンスの測定が含まれます。 業務の役割 (開発者、データベース管理者、または両方の組み合わせ) に応じて、個々の SQL ステートメント、アプリケーション全体、単一のデータベースサーバー、または複数のネットワーク接続されたデータベースサーバーのレベルで最適化できます。 プロアクティブにパフォーマンスを事前に計画する場合や、または問題の発生後に、構成やコードの問題のトラブルシューティングを行う場合があります。 CPU やメモリーの使用を最適化することで、スケーラビリティーを向上し、データベースを低下させず、より多くの負荷を処理させることもできます。


関連キーワード:  テーブル, インデックス, InnoDB, 状態, ステートメント, クエリー, データベース, ロック, データ, 結合