リクエストについて
以下のテーブルは、領域情報のデータ ディクショナリ テーブルのクエリーに関する例を示します。
必要な情報 | リクエスト例 |
---|---|
システムのディスク領域の合計 | SELECT SUM(MaxPerm) FROM DBC.DiskSpaceV; また、次のリクエストを使用することもできます。情報は指定されたデータベースの1つの行に格納されているため、リクエストがより効率的です。DBC.DiskSpaceVには、1つのAMPのデータベースごとに1つの行があるため、たくさんの行がスキャンされます。 SELECT SUM(MaxPerm) FROM DBC.GlobalDBSpaceV; |
現在使用中のディスク領域 | SELECT SUM(CurrentPerm), SUM(MaxPerm), (cast(SUM(currentperm) as float) / cast((NULLIFZERO(SUM(maxperm))) as float) * 100) (TITLE '%Diskspace_in_use', FORMAT 'zz9.99') FROM DBC.DiskSpaceV; |
特定のデータベースのディスク領域 | SELECT sum(MaxPerm) FROM DBC.DiskSpaceV WHERE databasename='xxxx'; 上記のリクエストは、結果の取得にパーティション スキャンを使用します。この処理は非常に効率的だと考えられています。また、次のリクエストを使用すると、集約は必要なくなり、さらにこのリクエストは行をハッシュして検索するため、さらに効率的になります。 SELECT MaxPerm FROM DBC.GlobalDBSpaceV WHERE databasename='xxxx'; |
スプール用に使用可能なディスク領域の比率 | SELECT ((cast((SUM(MaxPerm) - SUM(CurrentPerm)) as float)/cast((NULLIFZERO(SUM(MaxPerm))) as float))*100) (TITLE'% Avail for Spool', format'zz9.99') FROM DBC.DiskSpaceV; |
システム内の各データベースが使用している領域の比率 | SELECT Databasename (format 'X(12)') ,SUM(maxperm) ,SUM(currentperm) ,(((cast(SUM(currentperm) as float))/ cast(NULLIFZERO(SUM(maxperm)) as float)) * 100) (FORMAT 'zz9.99%', TITLE 'Percent // Used') FROM DBC.DiskSpaceV GROUP BY 1 ORDER BY 4 DESC WITH SUM (currentperm), SUM(maxperm); |
固定領域が不足しているユーザー | SELECT Databasename (format 'X(12)') ,SUM(maxperm) ,SUM(currentperm) ,(((cast(SUM(currentperm) as float))/ cast(NULLIFZERO(SUM(maxperm)) as float)) * 100) (format 'zz9.99%', TITLE 'Percent // Used') FROM DBC.DiskSpaceV GROUP BY 1 HAVING ((cast(SUM(currentperm) as float))/cast(NULLIFZERO(SUM(m axperm)) as float)) > 0.9 ORDER BY 4 DESC; 値0.9の部分は、サイトに適したしきい値の比率に変更できます。 |
大量のスプールを使用しているユーザー | SELECT databasename ,SUM(peakspool) FROM DBC.DiskSpaceV GROUP BY 1 HAVING SUM(peakspool) > 5000000000 ORDER BY 2 DESC; 値500000000の部分は、サイトに適した値に変更できます。 大容量の領域があるサイトでは、スプール使用量とスプール制限の許容度が高い可能性があります。 |
固定領域でゼロ以外のスキュー制限が設定されたユーザーとデータベース(グローバル固定領域アカウント処理) | SELECT databasename ,permskew FROM DBC.GlobalDBSpaceV WHERE permskew > 0 ORDER BY 2 DESC; このリクエストは、必要に応じて、AMPに領域を動的に割り当てるシステムにユーザーとデータベースを提供します。スキュー制限により、いくつかのAMPはAMPごとの容量を超えることができます。 |
固定領域がスキューされているけれども、スキュー制限が0に定義されているユーザーとデータベース | SELECT COALESCE((cast(MAX(currentPerm) as float)/cast(NULLIFZERO(AVG(currentPerm)) as float) - 1), 0) * 100 (FORMAT '9999.99') AS spaceskew, databasename FROM DBC.diskspacev GROUP BY 2 HAVING spaceskew > 125.0 WHERE permskew = 0; このリクエストは、領域使用状況が通常の25%を超えてスキューされたデータベースをチェックします。必要に応じて125.0を任意の値に変更します。生成されるデータベースについて、領域を効率的に管理する小さいpermskewlimitを定義してみてください。SkewLimit > 0は、AMPの必要に応じて領域が割り当てられることを示します。 |
任意のデータベースの現在の固定使用量とAMPレベルの領域の割り当て | SELECT vproc, currentperm, maxperm, AllocatedPerm FROM DBC.DiskSpaceV WHERE databasename=‘xxxx’ order by vproc; |
スキューされた固定使用量が定義されたデータベースの割り当て | SELECT databasename, allocatedperm, maxperm FROM DBC.GlobalDBSpaceV WHERE permskew > 0 or permskew IS NULL; |
データベースに残る割り当てされていない領域 | SELECT databasename, allocatedperm, maxperm,maxperm-allocatedperm (TITLE 'UnallocatedSpace'), permskew FROM DBC.GlobalDBSpaceV; |
物理領域がほとんど使い果たされたAMP | SELECT SUM(maxperm) m, SUM(currentperm+currentspool+currenttemp) c , cast(((m-c)*100.00) as float)/cast(m as float) (format 'zz9.99%') p, vproc FROM DBC.diskspacev group by vproc having p < 5.0; 上記のリクエストは、実際の使用率が残った合計領域の5%未満であるすべてのAMPを返します。必要に応じて、5.00を別の値に変更します。 |
特定のデフォルト マップに関連付けられたデータベースとユーザーの固定領域の使用状況 | SELECT dbv.databasename, sum(currentperm), sum(maxperm) FROM DBC.DiskSpaceV dbspace, DBC.DatabasesV dbv WHERE dbspace.databasename = dbv.databasename AND defaultmapname='td_map5' GROUP BY 1; |
特定のデータベース内の特定のマップで定義されたテーブルのサイズ | SELECT tabsz.databasename, tabsz.tablename, vproc, sum(currentperm) FROM DBC.TableSizeV tabsz, DBC.TablesV tabv WHERE tabsz.databasename = tabv.databasename AND tabsz.tablename = tabv.tablename AND tabv.mapname='td_map1' and tabsz.databasename='SysAdmin' GROUP BY 1,2,3 ORDER BY 1,2,3; |
各AMP中で個々のデータベースにマッピングされている固定領域の使用状況 | SELECT tabv.mapname, tabv.databasename, vproc, sum(currentperm) FROM DBC.TableSizeV tabsz, DBC.TablesV tabv WHERE tabsz.databasename = tabv.databasename AND tabsz.tablename = tabv.tablename GROUP BY 1,2,3 ORDER BY 1,2,3; |
システムで個々のデータベースにマッピングされている固定領域の使用状況 | SELECT tabv.mapname, tabv.databasename, sum(currentperm) FROM DBC.TableSizeV tabsz, DBC.TablesV tabv WHERE tabsz.databasename = tabv.databasename AND tabsz.tablename = tabv.tablename GROUP BY 1,2 ORDER BY 1,2,3; |
任意のユーザーに割り当てられたピーク時の最大スプール |
SELECT databasename, PeakAllocatedSpool from DBC.GlobalDBSpaceV; |