ホームページ >データベース >mysql チュートリアル >MySQL 統計の詳細な概要
この記事では、統計情報の概念と MYSQL 統計情報の利点の紹介を通じて、MySQL 統計情報に関連する知識ポイントの包括的な概要を説明します。これが、困っている友人に役立つことを願っています。
MySQL は SQL の実行時に SQL 解析とクエリ最適化のプロセスを経て、パーサーは SQL をデータ構造に分解し、クエリ オプティマイザーが SQL クエリを実行するための最適なソリューションを見つけて実行プランを生成します。クエリ オプティマイザーは、データベースの統計に基づいて SQL の実行方法を決定します。以下では、MySQL 5.7 の innodb 統計の関連内容を紹介します。
MySQL 統計ストレージは、非永続統計と永続統計の 2 つのタイプに分類されます。
非永続的な統計情報は、データベースを再起動すると、統計情報が失われます。非永続統計を設定するには 2 つの方法があります:
1 グローバル変数、 INNODB_STATS_PERSISTENT=OFF |
2 CREATE/ALTER テーブルパラメータ、 STATS_PERSISTENT=0 |
非永続統計は次の状況で自動的に更新されます:
1 ANALYZE TABLE を実行 |
2 innodb_stats_on_metadata=ON の場合、SHOW TABLE STATUS、SHOW INDEX、クエリ INFORMATION _SCHEMAUnder TABLES、 |
3 --auto-rehash 関数を有効にして、mysql クライアントを使用してログインします |
4 テーブルが初めて開かれます |
5 統計の最後の更新以降情報、テーブル 1/16 のデータが変更されました |
非永続的な統計情報の欠点は、データベースの再起動後に多数のテーブルが統計情報の更新を開始すると、明らかです。インスタンスに大きな影響を与えるため、現在は永続化が使用されています。
5.6.6 以降、MySQL はデフォルトで永続統計 (INNODB_STATS_PERSISTENT=ON) を使用し、永続統計はテーブル mysql.innodb_table_stats および mysql.innodb_index_stats に保存されます。
次の状況では、永続統計が自動的に更新されます:
1 INNODB_STATS_AUTO_RECALC=ON テーブル内のデータの 10% が変更された場合 |
2 新しいインデックスを追加する |
innodb_table_stats はテーブルの統計情報、innodb_index_stats はインデックスの統計情報、各フィールドの意味は次のとおりです。
テーブル名 | |
統計の最終更新時刻 | |
テーブルの行数 | |
クラスター化インデックスのページ数 | |
他のインデックスのページ数 | |
innodb_index_stats |
テーブル名 | |
インデックス名 | |
統計の最終更新日 | |
統計名 | |
統計値 | |
サンプリングサイズ | |
タイプの説明 |
以上がMySQL 統計の詳細な概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。