資料の 英語版 に戻るData Virtualization化のCOLLECT_STATISTICSストアドプロシージャ
Data Virtualization化のCOLLECT_STATISTICSストアドプロシージャ
最終更新: 2024年11月26日
Data Virtualizationで仮想化されたテーブルの統計情報を収集します。 Data Virtualizationオプティマイザは、これらの統計情報を使用して、クエリを効率的に処理するための最適なアクセスプランを決定します。 スキーマはDVSYS
。
より多くの表統計を使用することで、最適化プログラムは、可能な限り最良のアクセス・プランを提供するためにより良い決定を行うことができます。 表に対してCOLLECT_STATISTICS
を実行すると、通常、その表に対する後続の照会の実行速度が大幅に向上します。 詳細については、 Data Virtualization化の統計情報の収集を参照してください。
重要: (
COLLECT_STATISTICS
プロシージャーの代わりに) ANALYZE コマンドを使用して、オブジェクト・ストレージ上の仮想表に関する統計を収集してください。 詳しくは、 ANALYZE コマンドを参照してください。 オブジェクト・ストレージに対して作成される仮想化表を判別するために、タイプ別に仮想化オブジェクトをフィルターに掛けることができます。 の 「フィルター」 メニューで、 Object Storage、 「表」、または 「表示」 を選択します。許可
COLLECT_STATISTICS
プロシージャを実行するには、Data Virtualization マネージャーまたはエンジニアである必要があります。 詳細については、 Data Virtualization化のユーザーのロールの管理を参照してください。
統計情報を収集するには、リモートデータソースとData Virtualization で適切な権限が必要です。.
入力パラメーター
- virtschema
- この必須パラメーターのタイプは VARCHAR (128) です。 仮想表のスキーマ名を指定します。
- virtname
- この必須パラメーターのタイプは VARCHAR (128) です。 仮想表の名前を指定します。
- virtcolumns
- このオプション・パラメーターのタイプは VARCHAR (32672) です。 統計の収集対象となる列の名前のコンマ区切りリストを指定します。 NULL 値は、すべての列について統計を収集することを指定します。 空ストリングは、列統計を収集しないことを指定します。 この場合、表のカーディナリティーのみが収集されます。 列名に特殊文字が含まれている場合は、その名前を二重引用符で囲む必要があります。
- collection_type
- この必須パラメーターのタイプは SMALLINT です。 統計収集タイプを指定します。 有効な値は、 1 (remote-catalog タイプ) および 2 (remote-query タイプ) です。
- リモート・カタログ
- このタイプの統計収集は、ローカル方式の統計収集がサポートされる、リモート・データ・ソース内の仮想化テーブルでのみサポートされます。リモート・データ・ソースのカタログ・テーブルに格納されている統計が取得され、Data Virtualization統計カタログに格納されます。リモート・データ・ソースで正確な統計を使用できるようにすることが重要です。 remote-catalog タイプの統計収集は、グループ化されたテーブルではサポートされません。
- リモート照会
- このタイプの統計収集では、仮想化テーブルに対する SQL 照会を使用して統計が計算されます。仮想化テーブルに多数の行がある場合、または多数の列の統計が収集される場合、このタイプはリソースを過度に使用する可能性があり、完了までに時間がかかることがあります。 パフォーマンスを向上させ、リソースを節約するには、 Data Virtualization化のCOLLECT_STATISTICSストアドプロシージャでTABLESAMPLEオプションを指定するか、クラウドオブジェクトストレージのデータソースに'ANALYZEコマンドを使用して、データサンプリングで統計情報を収集することができます。
- オプション
- このオプション・パラメーターのタイプは VARCHAR (32672) です。 追加パラメーターのコンマ区切りリストを指定します。
- TABLESAMPLE
- 0 から 99 (両端を含む) の間の倍精度値を指定します。 この値は、統計の計算時にサンプリングする表の割合を表します。 デフォルト値の 0 は、サンプリングを行わないことを指定します。 このオプションは、 remote-query 統計収集タイプでのみ有効です。
- SAMPLING_THRESHOLD (サンプルしきい値)
- 0より大きい整数値を指定します。 この値は、サンプリング (指定されている場合) を使用する前にデータ・ソースに含まれている必要がある最小行数を表します。 デフォルト値は 1000 です。 行数がこのしきい値より少ない場合、列統計の計算時にサンプリングは使用されません。 このオプションは、 remote-query 統計収集タイプでのみ有効です。
出力パラメーター
- 診断
- このパラメーターのタイプは VARCHAR (32672) です。 障害が発生した場合の診断出力と、収集された統計の要約を省略した結果とともに示します。
使用上の注意
- リモートデータソースのデータに重要な変更を加える場合は、直接またはData VirtualizationWeb クライアントから COLLECT_STATISTICS プロシージャを実行します。
- 列名に特殊文字が含まれている場合は、その名前を二重引用符で囲む必要があります。
- リモート・データ・ソースがローカル統計を収集するためのツールをサポートしている場合は、ローカル統計が収集されていること、および仮想表の統計を収集するために remote-catalog タイプが使用されていることを確認してください。
- リモート・データ・ソースがローカル統計を収集するためのツールをサポートしていない場合、使用可能なオプションは remote-query タイプのみです。 仮想表に多数の行がある場合は、TABLESAMPLE オプションを使用します。 ほとんどの場合、サンプリング率を 20% にすることをお勧めします。
- TABLESAMPLE オプションを指定しない場合、SAMPLING_THRESHOLD オプションは効果がありません。
- TABLESAMPLE オプションを指定し、仮想表の行数が SAMPLING_THRESHOLD (デフォルトは 1000) より少ない場合、結果の統計は最適ではないため、サンプリングは行われません。
- TABLESAMPLE オプションを指定すると、サンプリング・レートが低すぎる場合に、統計収集が最適ではなくなる可能性があります。 ただし、サンプリング・レートを増やすと、より多くのリソースが消費され、統計収集のパフォーマンスが低下します。
- TABLESAMPLE オプションを指定すると、仮想化された表の行数が制限されている場合に、統計収集が最適ではなくなる可能性があります。 この場合は、TABLESAMPLE 値を大きくするか、データをサンプリングしないでください。
- 仮想表がリモート・データ・ソースのビューを参照する場合、使用可能なオプションは remote-query タイプのみであり、TABLESAMPLE オプションはサポートされません。
- サンプリング・レートが 100 に近い TABLESAMPLE オプションを指定しても、統計収集が依然として最適でない場合は、SAMPLING_THRESHOLD 値を変更することを検討してください。
- LOB タイプの列については、NUMNULLS 統計のみが収集されます。
例
以下の例では、 IBM Db2®の SAMPLE データベースの一部である表に対して仮想表を使用しています。 詳しくは、 SAMPLE データベースを参照してください。
- remote-catalog タイプを使用して、DEPARTMENT 表のすべての列の統計を収集します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "ADMRDEPT" [CHAR(3)]: colcard=3, numnulls=0, highkey="E01", lowkey="A00" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SPIFFY COMPUTER SERVICE DIV.", lowkey="BRANCH OFFICE F2" Column "MGRNO" [CHAR(6)]: colcard=9, numnulls=6, highkey="000100", lowkey="000020" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="I22", lowkey="B01" Return Status = 0
- remote-query タイプを使用して、DEPARTMENT 表のすべての列の統計を収集します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "ADMRDEPT" [CHAR(3)]: colcard=3, numnulls=0, highkey="E01", lowkey="A00" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS" Column "MGRNO" [CHAR(6)]: colcard=9, numnulls=6, highkey="000100", lowkey="000010" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="J22", lowkey="A00" Return Status = 0
- remote-query タイプを使用して、DEPARTMENT 表の一部の列の統計を収集します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,DEPTNAME,LOCATION', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Column "LOCATION" [CHAR(16)]: colcard=1, numnulls=14, highkey="", lowkey="" Column "DEPTNAME" [VARCHAR(36)]: colcard=14, numnulls=0, highkey="SUPPORT SERVICES", lowkey="ADMINISTRATION SYSTEMS" Column "DEPTNO" [CHAR(3)]: colcard=14, numnulls=0, highkey="J22", lowkey="A00" Return Status = 0
- remote-query タイプは、DEPARTMENT 表統計のみを収集する場合に使用します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', '', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."DEPARTMENT": Table Cardinality = 14 Return Status = 0
- remote-query タイプを使用して、DEPARTMENT 表で定義されていない列の統計を収集します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', 'DEPTNO,FIRSTNME', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : ERROR: VALIDATE COLUMN FILTER LIST -- Invalid column "FIRSTNME" in virtColumns Return Status = 0
- リモート・カタログにローカル表 (DEPARTMENT) の統計がない場合は、 remote-catalog タイプを使用して統計を収集します。
call dvsys.collect_statistics('SAMPLE', 'DEPARTMENT', null, 1, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : WARNING: No statistics found in remote catalog for table "SAMPLE "."DEPARTMENT" Return Status = 0
- 特殊文字を含む列が指定されている場合に統計を収集するには、 remote-catalog タイプを使用します。
call dvsys.collect_statistics('SAMPLE', 'SpecialChars', '"Col,1","Col""2"', 2, null, ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."SpecialChars": Table Cardinality = 4 Column "Col,1" [INTEGER]: colcard=3, numnulls=0, highkey="3", lowkey="1" Column "Col"2" [INTEGER]: colcard=3, numnulls=1, highkey="2", lowkey="1" Return Status = 0
- SALES 表のすべての列の統計を収集するには、 remote-catalog タイプと 20% のサンプリング・レートを使用します。 サンプリングを容易にするために、SALES 表に行が追加されました。
call dvsys.collect_statistics('SAMPLE', 'SALES', null, 2, 'TABLESAMPLE=20', ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."SALES": Table Cardinality = 1304 Column "SALES_DATE" [DATE]: colcard=247, numnulls=0, highkey="2007-03-31", lowkey="2005-12-31" Column "SALES_PERSON" [VARCHAR(15)]: colcard=3, numnulls=0, highkey="LUCCHESSI", lowkey="GOUNOT" Column "SALES" [INTEGER]: colcard=19, numnulls=0, highkey="19", lowkey="1" Column "REGION" [VARCHAR(15)]: colcard=4, numnulls=0, highkey="Quebec", lowkey="Manitoba" Return Status = 0
- remote-catalog タイプ、サンプリング・レート 20%、および SAMPLING_THRESHOLD 40 行を使用して、EMP 表のすべての列 (デフォルトでは 42 行) の統計を収集します。 SAMPLING_THRESHOLD が指定されていない場合、デフォルトのサンプリングしきい値は 1000 行であるため、TABLESAMPLE オプションは無視されます。
call dvsys.collect_statistics('SAMPLE', 'EMP', null, 2, 'TABLESAMPLE=20,SAMPLING_THRESHOLD=40', ?)
Value of output parameters -------------------------- Parameter Name : DIAGS Parameter Value : Collected statistics for table "SAMPLE "."EMP": Table Cardinality = 42 Column "EDLEVEL" [SMALLINT]: colcard=5, numnulls=0, highkey="19", lowkey="12" Column "PHONENO" [CHAR(4)]: colcard=10, numnulls=0, highkey="8953", lowkey="1793" Column "SEX" [CHAR(1)]: colcard=2, numnulls=0, highkey="M", lowkey="F" Column "FIRSTNME" [VARCHAR(12)]: colcard=11, numnulls=0, highkey="VINCENZO", lowkey="DIAN" Column "MIDINIT" [CHAR(1)]: colcard=10, numnulls=0, highkey="V", lowkey=" " Column "BIRTHDATE" [DATE]: colcard=11, numnulls=0, highkey="2003-05-26", lowkey="1955-09-15" Column "COMM" [DECIMAL(9,2)]: colcard=11, numnulls=0, highkey="4220.00", lowkey="1272.00" Column "SALARY" [DECIMAL(9,2)]: colcard=11, numnulls=0, highkey="96170.00", lowkey="31840.00" Column "LASTNAME" [VARCHAR(15)]: colcard=9, numnulls=0, highkey="YAMAMOTO", lowkey="ADAMSON" Column "WORKDEPT" [CHAR(3)]: colcard=6, numnulls=0, highkey="E21", lowkey="A00" Column "HIREDATE" [DATE]: colcard=9, numnulls=0, highkey="2006-02-23", lowkey="1979-08-17" Column "BONUS" [DECIMAL(9,2)]: colcard=4, numnulls=0, highkey="800.00", lowkey="300.00" Column "EMPNO" [CHAR(6)]: colcard=9, numnulls=0, highkey="200340", lowkey="000050" Column "JOB" [CHAR(8)]: colcard=5, numnulls=0, highkey="OPERATOR", lowkey="CLERK " Return Status = 0