領域情報のリクエスト例 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データ ディクショナリ

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-31
dita:mapPath
ja-JP/prb1610499325399.ditamap
dita:ditavalPath
ja-JP/prb1610499325399.ditaval
dita:id
B035-1092
Product Category
Software
Teradata Vantage

リクエストについて

以下のテーブルは、領域情報のデータ ディクショナリ テーブルのクエリーに関する例を示します。
必要な情報 リクエスト例
システムのディスク領域の合計
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;