17.00 - 17.05 - チャージ バック - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - データベースの管理

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
管理
Publication ID
B035-1093-170K-JPN
Language
日本語 (日本)

ASEを使用して単純なチャージ バック ユーティリティを実装できます。これによって、1ユーザーが消費する、日別のシステムCPU時間とディスク アクティビティの量を特定できます。ユーザーのアカウント名に特別な文字を数個追加するだけで、そのユーザーが行なった処理についての詳細な情報をシステム テーブルから取り出すことができます。Vantageは、この特別な文字をセッション番号、リクエスト番号、アカウント名がシステム テーブルに書き込まれた日付や時間といった情報に展開します。

1つのSQLステップが完了するたびに、Vantageは必ずリクエストに関する統計でDBC.Acctgテーブルを更新します。統計には、リクエストによって使用されたCPU時間(単位: 秒)の合計と論理ディスク入出力数が含まれます。この統計情報がユーザー名とアカウント名が同じ既存の行に追加され、集計されます。

構成

次の例では、追跡する各ユーザーのアカウント列を変更します。各アカウント文字列の先頭にCB&Dというテキストを挿入します。必要な場合には、この4文字に続けて任意のアカウント情報を追加できます。

アカウント名に日付が追加されているとき、日によってアカウント名が実際に変わり、DBC.Acctgテーブルに毎日新しい行が追加されます。この行には、その日に実行された各リクエストに対するCPU時間の合計秒数とディスク入出力の合計数が記録されます。

&Dは、YYMMDDの形式で現在の日付に展開されるASEトークンです。CBを使用して、チャージ バックのためにそのアカウントが追跡中であることを示すことができます。

ユーザーの既存のアカウント列を変更するためには、次のSQLコマンドを使用します。

MODIFY USER JANETJONES AS ACCOUNT = ('CB&D');
ワークロード パフォーマンスの文字($R00、$H00、$M00、$L00など)を使用する場合は、アカウント文字列の先頭に指定する必要があります。

SELECT ACCOUNTNAME, USERNAME, SUM(CPUTIME), SUM(DISKIO) FROM DBC.AMPUSAGE
WHERE SUBSTR(ACCOUNTNAME, 1, 2) = 'CB'
GROUP BY USERNAME, ACCOUNTNAME
ORDER BY USERNAME, ACCOUNTNAME;

*** Query completed. 11 rows found. 4 columns returned.
*** Total elapsed time was 2 seconds.

AccountName     UserName             Sum(CpuTime)      Sum(DiskIO)
--------------  -------------  ------------------  ---------------
CB060902        JANETJONES               1,498.64        3,444,236
CB060903        JANETJONES                 934.23        1,588,764
CB060904        JANETJONES                 883.74          924,262
CB060905        JANETJONES                 214.99          200,657
CB060902        JOHNSMITH                  440.05          396,338
CB060903        JOHNSMITH                  380.12          229,730
CB060904        JOHNSMITH                  112.17          184,922
CB060905        JOHNSMITH                   56.88           99,677
CB060902        SAMOREILLY                 340.34          410,178
CB060903        SAMOREILLY                  70.74           56,637
CB060902        WEEKLY                   3,498.03        7,311,733
If we wanted to charge $0.25 per CPU second and bill for the month of
September 2006, we could use the following query to generate the bill:

SELECT USERNAME, SUM(CPUTIME)*0.25 (FORMAT '$$ZZZ,ZZZ,ZZ9.99')
FROM DBC.AMPUSAGE
WHERE SUBSTR(ACCOUNTNAME, 1, 6) = 'CB0609'
GROUP BY 1
ORDER BY 1
WITH SUM(CPUTIME)*0.25 (FORMAT '$$ZZZ,ZZZ,ZZ9.99', TITLE 'Grand Total:');
*** Query completed. 4 rows found. 2 columns returned.
*** Total elapsed time was 2 seconds.

UserName                        (Sum(CpuTime)*0.25)
------------------------------  -------------------
JANETJONES                                  $882.90
JOHNSMITH                                   $247.33
SAMOREILLY                                  $102.77
WEEKLY                                      $874.51
                                -------------------
                  Grand Total:            $2,107.51

チャージ バックとオーバーヘッド

CPUから見た場合、チャージ バックにオーバーヘッドはほとんどありません。アカウント処理テーブルは、各文の完了時にすでに更新されています。唯一のコストは、ユーザーごとに毎日行に追加される新しい行です。領域的に見た場合、アカウント処理テーブルは毎日1人のユーザーにつき1行ずつ大きくなります。この増大は定期的なクリーンアップで解消できます。