5
1

More than 1 year has passed since last update.

Db2 for i ってやっぱスゴくない?(スペックの話)

Last updated at Posted at 2023-06-08

ここにDb2 for i のテーブルのスペックが書いてあります。

1レコードの最大バイト数 32 766 バイト
レコードの最大フィールドの数 8 000 フィールド  *1
ファイル内のキー・フィールドの数 120 フィールド *1
テーブル・ビューのキーの最大サイズ 32 768 文字
1テーブルの最大レコード数 4 294 967 288 レコード
1テーブルの最大バイト数 1.7 テラバイト *1
1テーブルに対して作成可能な論理ファイル(ビュー)の最大数 3686 ファイル
文字タイプのカラムまたは DBCSタイプの最大サイズ 32 766 バイト
ゾーン 10 進またはパック 10 進タイプのカラムの最大サイズ 63 桁

地味にすごいと思います。。

※上記マニュアルページには

通常、 IBM i データベース・ファイルは、オペレーティング・システムで許可されている最大サイズに達するまで拡張できます。 オペレーティング・システムは、通常一度にすべてのファイル・スペースを 割り振ることはしません。 むしろ、ファイルの大きさに応じて追加スペースを割り振ります。 このような自動的に記憶域を割り振る方法により、適切 なパフォーマンスと効率的な補助記憶域スペースが最良の組み合わせで管理されます


と書かれていますが、かんたんにいうと他のRDBMSのように表スペースは存在せず(理由:RDBMSはマイクロコード層で動作するのでDB専用のストレージ領域を定義する必要が無い、OSレベルのストレージ管理で動作するから)、テーブルのサイズが増加していくと物理ストレージやLUNに分散されて順次拡張されていきます。またテーブル最大サイズも論理的には制限がない、ということになります。(通常は物理的なストレージサイズで上限が規定される)

※わりと最近遇った話
・メインフレームのCOBOL,データベース資産を移行したい案件でやっぱりデータベースのカラム数(たしか1,000以上),レコード件数(億件以上のテーブル多数),スキーマ数数百以上,などなどでオープン系DBだとかなりきついと(実質無理と)。Db2 for iだと上記は割とフツーです。
私が知ってる事例ですと1コアで億件テーブル処理してるユーザーはぜんぜん普通です。スキーマ数=数百問題なし(設計上は1000-2000スキーマ以上で設計)などなどです。

*1 Db2 for i は複数メンバーといって、カラムレイアウトを複数作成してそれぞれのレイアウトに属するレコードごとに、メンバーとして扱うことが出来ます。(マルチメンバー構成、普通にカラムレイアウトが1つしかないのはシングルメンバー構成)。この値はシングルメンバーの最大数です。

5
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1