4

DB2 / z v10のDB2ドキュメントでは、表領域セクションに次のスニペットがあります。

原則として、各テーブルスペースには1つのテーブルのみが必要です。

しかし、それは実際にはこれの論理的根拠を提供しません。

次の行に沿って過去の時間ベースの情報を格納するテーブルがいくつかあります(複雑さは大幅に軽減されていますが、説明するには十分なはずです)。

Table HOURLY_CPU_USAGE:
    RecDate        date
    RecTime        time
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, RecTime, Node)
Table DAILY_CPU_USAGE:
    RecDate        date
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, Node)
Table MONTHLY_CPU_USAGE:
    RecDate        date
    Node           char(32)
    MaxCpuUsage    float
    primary key    (RecDate, Node)

(日次テーブルにはすべての時間単位のレコードが1日にロールアップされ、月次テーブルには日次データと同じようにロールアップされ、日付のある行にロールアップされますYYYY-MM-01)。

このテーブルはすべて目的が非常に似ているように見えますが、なぜそれらを別々のテーブルスペースに保持したいのかわかりません。

今のところ、それらを1つのテーブルに結合する可能性を割り引いてください。これは私が行った提案ですが、それを妨げる複雑な問題があります。

「テーブルスペースごとに1つのテーブル」ガイドラインの背後にある理論的根拠何ですか?もしあれば、例外は何ですか?厳格なルールというよりはガイドラインのように思われるので、例外かもしれないと思います。

4

4 に答える 4

5

最近では、表スペースごとに1つの表を維持する主な理由は、管理上の理由です。ほとんどのDB2ユーティリティーは、表スペース・レベルで機能します。たとえば、特定の表の表スペースでLOAD REPLACEを実行すると、LOAD REPLACEが最初に行うことはすべての行を削除することであるため、他のすべての表は空になります。

では、「テーブルスペースごとに1つのテーブルを保持しないのはなぜですか?」表が他の表なしでは役に立たない程度に関連している場合、単一の表スペースに複数の表を含めることは合理的であり、さらに望ましいと思います。例えば。CustomerTable+NextCustomerIDTable。

もう1つの考慮事項は、テーブルスペースのタイプです。作成した表スペースのタイプによっては、単一の表スペースに複数の表を作成すると、パフォーマンスに影響が出る可能性があります。セグメント化表スペースを使用していない場合、表スペース・スキャンは、他の表のページを含む表スペース内のすべてのページを読み取ります。ここで「テーブルスペーススキャン」トピックを参照してください: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic =%2Fcom.ibm.db2.doc.ve%2Fdvnhlpcn_tablescan.htm

于 2012-03-19T07:21:18.210 に答える
2

大雑把な推測ですが、多くの db/2 ユーティリティはテーブル スペースのレベルで動作するため、IBM はテーブル スペースごとに複数のテーブルを推奨していない可能性があります。複数の表を 1 つの表スペースに入れると、ユーティリティーはすべての表を 1 つの単位として操作します。

例えば、バックアップと復元は表スペース・レベルで機能します。同じテーブル スペース内の個々のテーブルをバックアップ/復元することはできません。それらはすべて 1 つの単位としてバックアップまたは復元されます。同じことが他のユーティリティにも当てはまり、おそらく多くのチューニング パラメータにも当てはまると思います。

于 2012-02-21T23:17:31.907 に答える
0

一般に、「テーブルスペースごとに 1 つのテーブル」構成の方がパフォーマンス オプションが優れている傾向があるためです。たとえば、テーブルがパーティション分割されている場合 (TS ごとに 1 Tb が必要)、特定のクエリに対して限定パーティション スキャンを実行する機能。

(しかし、メインフレームのパフォーマンス担当者として、私はそう思いますよね?) :-)

于 2012-04-03T16:40:47.240 に答える