tencent cloud

TDSQL-C for MySQL

動向とお知らせ
製品アップデート
製品お知らせ
初心者ガイド
製品概要
プロダクト概要
製品の強み
適用シーン
製品アーキテクチャ
製品仕様
インスタンスタイプ
製品機能一覧
データベースのバージョン
リージョンとアベイラビリティゾーン
基本概念
利用制限
利用ガイドの推奨事項
自社開発カーネル
カーネル概要
カーネルバージョンのアップデート情報
カーネル最適化バージョン
機能特性
パフォーマンス関連機能
セキュリティカテゴリの機能
安定性機能
分析エンジン特性
カーネル問題のチェックと修復
購入ガイド
課金概要
製品価格
クラスタを作成する
構成変更説明
未払いについての説明
継続支払いの説明
返金ポリシー
従量課金から年/月単位サブスクリプションへの変換
従量課金からServerlessへの変換
付加価値サービスの課金説明
料金請求書の確認
クイックスタート
データベース監査
概要
監査インスタンス一覧
監査サービスを有効化する
監査ログの確認
ログ配信
事後アラーム設定
監査ルールの変更
監査サービスを変更する
監査サービスを停止する
監査ルールテンプレート
監査タスクの照会
サブユーザーへのデータベース監査利用権限付与
Serverlessサービス
Serverless入門
サーバーレス版クラスタの作成と管理
伸縮性スケーリング管理ツール
Serverlessリソースパック
マルチAZデプロイ
設定を変更する
よくあるご質問
Serverlessコスト見積ツール
操作ガイド
操作概要
コンソールでのクラスタページビューの切り替え
データベース接続
インスタンス管理
設定を変更する
インスタンス形態管理
クラスタ管理
読み取り専用インスタンス管理 
データベースプロキシ
アカウント管理
DMC
DMC(データベース管理ツール)
パラメータ設定
マルチAZデプロイ
グローバルデータベース
バックアップとリストア
操作ログ
データマイグレーション
パラレルクエリ
列ストレージインデックス CSI
分析エンジン
データベースセキュリティと暗号化
モニタリングとアラーム
SQLの基本操作
以下のコマンドを実行して、TDSQL-C for MySQLに接続してログインします
Tag
実践チュートリアル
TDSQL-C for MySQL データベース監査の等級保護実践
非InnoDBテーブル問題のワンクリック移行検出処理方法
DTSによるデータベースバージョンのアップグレード MySQL 5.7から8.0へ
TDSQL-C for MySQL 使用規範
新版コンソール
データベースプロキシの複数接続アドレスによる複数ROグループの実現
データベースプロキシのメリット
ストレージの課金モードの選び方
DTSによるリモートディザスタリカバリの構築
クラスタ用VPCの作成
データ復旧の方法
CPU使用率の高騰問題の解決方法
サブユーザーへの監視データ閲覧権限付与方法
ホワイトペーパー
セキュリティホワイトペーパー
性能ホワイトペーパー
トラブルシューティング
接続関連
性能関連
よくあるご質問
基本概念
購入と課金
サポートされるフォーマット
接続とネットワーク
機能特性
コンソールの操作
データベーステーブル
パフォーマンスとログ
データベース監査
TDSQL-C for MySQLとTencentDB for MySQLの違い
関連契約
SLA
利用規約
TDSQL-C ポリシー
プライバシーポリシー
データ処理と安全プロトコル
汎用参考
標準と認証
用語一覧
お問い合わせ

統計情報の収集

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:46:23
読み取り専用分析エンジンにおいてSQL実行で最適な結果を得るには、テーブルオブジェクトの基本統計情報収集が必要です。統計情報の収集が完了したテーブルに対して初めて、システムはユーザーが実行するSQLに合理的な実行計画を高精度で推薦できます。

統計情報の概要

統計情報(Statistics)は、データベースオブジェクトのデータ特性と分布に関する情報です。データベースは統計情報を活用することで、より正確なプランコストを算出可能となり、プラン選択の最適化が実現します。統計情報の種類には、テーブルの行数、列の異なる値の数(number of distinct、略称NDV)、列のヒストグラムなどが含まれます。統計情報の収集はデータベースオブジェクトのスキャンと取得を伴い、収集された統計情報はシステムのデータ辞書に格納されます。さらに、システムは統計情報のキャッシュをローカルで維持し、オプティマイザの統計情報アクセス効率を向上させます。同時に、統計情報の収集と利用においては、以下の2点に留意する必要があります:
統計情報の正確性はオプティマイザの意思決定にとって非常に重要です。したがって、統計情報を定期的に更新・保守することは、データベースのパフォーマンスを維持するカギとなります。
統計情報の収集はデータベースのパフォーマンスにある程度の影響を与える可能性があります。これはデータベースオブジェクトのスキャンと分析を伴うためです。したがって、統計情報を収集する際には、パフォーマンスと統計情報の正確性のバランスを考慮する必要があります。
要するに、統計情報はデータベース管理システムにおいて極めて重要な役割を果たしており、データベースオブジェクトに関する重要な情報を提供することで、オプティマイザがより適切な判断を下すことを支援し、クエリ性能およびデータベースシステム全体の効率性向上に貢献します。
説明:
バージョン2.2410.1.0以降ではランダムサンプリング機能がサポートされています。この機能はTableScanオペレータが指定したサンプリング率に基づいてランダムサンプリングを実行可能です。同時にブロック単位のサンプリングをサポートし、設定した割合に基づいた統計情報収集が行えるため、統計情報収集プロセスにおける全表スキャンによるオーバーヘッドを大幅に削減できます。

テーブルの統計情報問い合わせ

SHOW TABLE STATS [ShowLikeOrWhere];
クエリ結果フィールドの説明は以下の通りです:
カラム名
説明
db_name
データベースの名前。
table_name
テーブルの名前。
partition_name
パーティションの名前。
update_time
収集の更新時間。
modify_count
テーブルにおける変更に関わる行数。
row_count
テーブルの総行数。
sample_size
基本統計情報収集のサンプリング行数。
testデータベース内のt1テーブルの統計情報をクエリ実行する例は以下の通り:
SHOW TABLE STATS WHERE db_name='test' AND table_name='t1';

統計情報収集

現在、読み取り専用分析エンジンでは二つの異なる統計情報収集方式をサポートしています:
自動収集
バージョン2.2410.1.0以降では、読み取り専用分析エンジンのコアが、列ストレージへのデータロード時に動的サンプリングと統計情報の自動収集を行う機能をサポートしています。ユーザーは手動で収集を行わなくても、該当するデータベーステーブルの統計情報を生成することができます。
注意:
デフォルトの自動統計情報収集にはテーブルのヒストグラム情報が含まれません。テーブルのヒストグラム情報を収集する必要がある場合は、手動で収集を行ってください。
手動収集
指定テーブルオブジェクトの最新統計情報を手動で取得する必要がある場合は、MySQLクライアントを使用して読み取り専用分析エンジンインスタンスにログインし、以下の文を実行することで統計情報を収集できます:
ANALYZE TABLE <テーブル名> [ ALL COLUMNS| COLUMNS IdentList [WITH NUM BUCKETS]];
ALL COLUMNSは、すべての列が指定された動作に従って統計情報を収集することを指定します。例えば、すべての列でヒストグラムを収集するよう指定する場合などです。
ALL COLUMNSを指定しない場合、デフォルトの収集戦略が使用されます。つまり、列の基本統計情報を収集しますが、ヒストグラム情報は含まれません。
COLUMNS IdentList は、指定された列の関連統計情報を収集する必要があることを意味します。例:COLUMN c1,c2,c3
NUM BUCKETSは等高ヒストグラムまたはTOPNを収集するバケット数を指定します。範囲は[1,1024]であり、バケット数を1に指定した場合は等高ヒストグラムまたはTOPNを収集しないことを意味します。

使用例

デフォルト戦略を使用してtestデータベース内のt1の統計情報を収集:
ANALYZE TABLE t1;
testデータベース内のt1テーブルのすべての列のヒストグラム統計情報を収集するよう指定:
ANALYZE TABLE t1 ALL COLUMNS WITH 256 BUCKETS;
testデータベース内のt1テーブルのc1、c2列の統計情報ヒストグラムを収集するよう指定:
ANALYZE TABLE t1 COLUMNS c1,c2 WITH 256 BUCKETS;

データベースレベルの統計情報収集を手動で指定します。

テーブルの数が多い場合、直接databaseに対して統計情報収集を実行できます。収集戦略の意味はテーブルレベルと同じであり、収集の原則はできる限りdatabase配下の全テーブルを収集することです。たとえ一部のテーブル収集が失敗しても、他のテーブルの収集には影響しません。
ANALYZE DATABASE DBNameList [ ALL COLUMNS| COLUMNS IdentList [WITH NUM BUCKETS]];

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック