MTU lab

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

動機

列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 バイトでした。
  • しかし製品のご利用を検討されているお客様から「カラム数がもっと多かったり、レコード長が長いデータで測定した時の結果を知りたい(※Oracle Database の1表当たりのカラム数の上限は 1000)」というご指摘を受けた為評価テストを実施する事になりました。本稿はそのテストで得られた結果をまとめた資料です。
  • この評価テストでは、最大で 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

まとめ