MTULabo
  • 製品紹介
  • 導入事例
  • FAQ
  • MTULabo
  • ダウンロード
評価版ライセンス申込 有償版利用申込(見積依頼) MTU Advance

カラム数が多い場合の性能への影響

公開日 2015-05-22
更新日 2015-05-22

動機

列No. データ型
1 varchar2(10)
2 date
3 number(13)
4 varchar2(15)
5 number(8,2)
6 date
7 char(8)
8 varchar2(12)
9 number(15)
10 varchar2(20)
  • 当サイトやPR資料等で今まで公開して参りましたMTUの性能に関するデータは、右記のデータ型で定義された列を持つ、比較的データ長の短いテーブルを使って測定された結果に基づくものでした。このテーブルへ弊社のオリジナルユーティリティー(非公開)を使ってサンプル・データをロードした時の平均データ長は 165 バイトでした。
  • しかし製品のご利用を検討されているお客様から「カラム数がもっと多かったり、レコード長が長いデータで測定した時の結果を知りたい」というご指摘を受けた為評価テストを実施する事になりました。本稿はそのテストで得られた結果をまとめた資料です。
  • この評価テストでは、最大で 270 個の列を持ち、平均データ長 4157 バイトというかなり長めのデータ長のテーブルをアンロードする実験を行い、それよりも列の少ないテーブルをアンロードした時と何が違うのかを比較して、列の多さが性能に与える影響を確認しました。

測定条件

全体の条件

条件 選択内容
使用したシステム こちらのリンクをクリックすると、テストに使用したコンピュータについて解説した、このサイト内の記事へジャンプします。
用意するテーブル verchar2(15)型データをパーティション化キーとするハッシュ・パーティション表:HASH_PART_xxxx を作成(下表参照)
パーティション数 32
アンロード時並列度 32
MTU用環境変数
(出荷時初期値を変更した主なもの)
FILESIZE=0
BIND_SIZE=1G
PARALLELISM=32
PARTITIONING=0

個々のテーブルの条件

テーブルとデータ関する特性

テーブル名称 (接頭辞:HASH_PART)
_0160 _0480 _1440 _4320
データ件数 [単位:百万件] 270 90 30 10
CSV の平均データ長 [単位:バイト] 165 472 1393 4157
項目数 VARCHAR2 4 12 36 108
項目数 DATE 2 6 18 54
項目数 NUMBER 3 9 27 81
項目数 CHAR 1 3 9 27
総項目数 10 30 90 270
データ生成所要時間 [単位:秒] *1 5758 4212 3318 2962
セグメントサイズ [単位:GB] *2 29 29 29 40
CSV データ量 [単位:GB] 41.6 39.6 38.9 38.7
  1. データ生成は弊社のオリジナルユーティリティー(非公開)を使用
  2. USER_SEGMENTS ビューの BYTES 列値を集計表示

測定結果

性能特性

テーブル名称 (接頭辞:HASH_PART)
_0160 _0480 _1440 _4320
アンロード所要時間 [単位:秒] 99.90 96.87 93.41 126.12
平均処理能力 [単位:kB/秒] 436942 428812 437163 321940

まとめ

  • テーブル:HASH_PART_0160/_0480/_1440 を使用したテストケースでは、平均処理能力に大きな差異は認められませんでした。また、ディスク・ベンチマークテスト(Sequential Write = 496.897 MB/s)と当テストの比較結果から、ストレージへの書込み能力限界に近いデータレートで処理できることが分かりました。
  • しかしHASH_PART_4320 のケースでは能力低下が見られました。これはブロックサイズが8192で設定されていたため、1ブロックに複数の行を詰め込むことが出来ず空き領域が多い為、その他のケースと比べて読取ブロック数が増大したためと考えられます。
  • カラム数の多さが性能に影響を与える事は殆ど無い事が分かりました。Oracle ブロックへデータが効率良く格納されている事が、待機時間の短縮に影響を与えることが分かりました。