17.00 - 17.05 - MERGEBLOCKRATIO - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.00
17.05
Release Date
2020年6月
Content Type
プログラミング リファレンス
Publication ID
B035-1184-170K-JPN
Language
日本語 (日本)

MERGEBLOCKRATIOオプションは、永久テーブルおよび永久ジャーナル テーブルに対するフル テーブル変更操作において、複数の既存の小さいデータ ブロックを組み合わせて1つの大きいデータ ブロックにする手段を提供します。このオプションは、揮発テーブルおよびグローバル一時テーブルに対しては使用できません。ファイル システムは、指定したマージ ブロック率を使用して、テーブル中のデータ ブロック数を少なくします。それによりテーブルの大半が多数の小さいデータ ブロックで構成される状態が回避されます。小さいデータ ブロックの数が減ると、Teradata Databaseは、テーブルのかなり部分を読み込んで変更しなければならないような操作のI/Oオーバーへッドを減らすことができます。この状況で小さいと見なされる一般的なブロック サイズを定義することはできません。この説明に該当する正確なブロック サイズは、多少主観的なものであり、さまざまなサイトで生じるI/Oパフォーマンスに応じて異なる場合があります。

新しいデータの挿入によって頻繁に変更されるテーブルでは、平均のブロック サイズは、サポートされる最大複数行ブロック サイズの50%~100%の範囲で変化します。この最大サポート サイズは、テーブル レベルの属性DATABLOCKSIZE(CREATE TABLEを参照)、または、テーブルのDATABLOCKSIZE属性の値を設定していない場合は、DBS制御レコードで定義した、テーブルに対するシステムレベルのブロック サイズの任意のとして定義されます。

テーブルから行を削除する場合には、削除した行が含まれていたブロックが、定義されている範囲のサイズよりも小さくなる場合があること、およびそのブロックの新しいサイズは、ユーザー定義のブロック サイズとはかなり異なる場合があることに注意してください。

データ ブロックをマージすると利点となるブロック サイズ分布の極端な例としては、平均ブロック サイズを64 KBにして作成したテーブルのブロックが、時間の経過とともに平均サイズがわずか8 KBまで縮小または分割されたという場合が挙げられます。リクエストによってテーブル内のすべてのデータ ブロックがアクセスされるということはほとんどないため、これは極端な例です。このテーブルでブロックの分割が頻繁に実行された場合、データ ブロックの数が桁違いに増えている可能性があります。

テーブル内の複数行が、元の平均ブロック サイズに近いサイズのブロックにリパックできる場合は、テーブル内の大半のブロック、またはすべてのブロックを読み込むクエリーに対する応答時間を短縮できるでしょう。これは、論理的または物理的(あるいはその両方の)読み込み回数が桁違いに減少するためです。

ブロックの自動的なマージにより、IMMEDIATEオプションを伴う場合と伴わない場合のいずれにおいても、ALTER TABLE文のDATABLOCKSIZEオプションの既存機能が強化されます。このオプションによって、ブロックが小さいテーブルの問題は軽くなりますが、欠点もあります。
  • 小さいデータ ブロックの問題を解決するには、DBAが新しいSQLリクエストを手動で実行する必要があります。
  • また、問題の解決に必要なSQLリクエストを実行する前に、パフォーマンスの問題を引き起こしているテーブルとブロック サイズを判別する必要もあります。例えば、テーブル データ ブロック サイズの統計は、FerretユーティリティのSHOWBLOCKSコマンドを使用するか、SQLインターフェースでCreateFsysInfoTableマクロとPopulateFsysInfoTableマクロを使用して入手することができます。Ferretユーティリティの詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。CreateFsysInfoTableマクロとPopulateFsysInfoTableマクロの詳細については、<Teradata Vantage™ - SQL演算子およびユーザー定義関数、B035-1210>の「ファイル システム情報のマクロ」を参照してください。
  • 問題を解決するSQLリクエストで実行する操作では、EXCLUSIVEテーブル レベルのロックが必要ですが、これはテーブルの上で同時更新のアクティビティをブロックします。
  • IMMEDIATEオプションを指定する場合、テーブル内の一部のデータ ブロックは、テーブルが更新されるとすぐに小さくなることがあります。IMMEDIATEオプションを指定しない場合は、テーブル内のいくつかのデータ ブロックがしばらく更新されないときに、それらのデータ ブロックがもう一度大きくなるまでに長い時間がかかることがあります。IMMEDIATE DATABLOCKSIZEを参照してください。
マージ ブロック率のアプローチにはこれらの欠点がなく、次の強化機能を提供します。
  • DBAが介入することなく、自動的に実行します。
  • ブロック サイズのヒストグラムを分析する必要がありません。
  • 特定のAMPレベルのロックは必要ありません。
  • 小さいデータ ブロックを継続して検索し、これらのブロックが更新されていない場合でもマージできるようにします。

MERGEBLOCKRATIOオプションのパフォーマンスに関わる面の詳細については、データ ブロックのマージのパフォーマンスの事項を参照してください。

小さいデータ ブロックがマージされるサイズのしきい値は、MERGEBLOCKRATIOオプションを使用するか、またはMergeBlockRatio DBS制御フラグの設定を変更することによって制御できます。DBS制御レコードのDisableMergeBlocksフィールドの設定を変更することにより、小さいデータ ブロックのマージを無効にすることもできます。詳細については、<Teradata Vantage™ - データベース ユーティリティ、B035-1102>を参照してください。