- PR -

Oracle 行数が多いDBのテーブル設計

1
投稿者投稿内容
jamiro
会議室デビュー日: 2004/09/10
投稿数: 8
投稿日時: 2005-03-29 13:53
大規模なDBを扱ったことがないのでご教授いただきたいのですが?

オラクルで年間400万件(行数)x10年分保管という大きなデータを
1つのテーブルとして考えているのですが、やはり最大4000万行と
なると現実的ではないのでしょうか?

テーブルに対する処理は、日付検索(対象:約1000件)や期間検索(対
象:約100件)程度です。

また、現実的でなければテーブルを年単位で10分割するとパフォーマンスは
改善されるのでしょうか?

NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-29 13:58
あの〜抜本的に
正規化して分けた方が良いと思うんですが。 (^^ゞ

_________________
Inspired Ambitious
ISMS Assistant Auditor
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-03-29 14:07
引用:

jamiroさんの書き込み (2005-03-29 13:53) より:
大規模なDBを扱ったことがないのでご教授いただきたいのですが?

オラクルで年間400万件(行数)x10年分保管という大きなデータを
1つのテーブルとして考えているのですが、やはり最大4000万行と
なると現実的ではないのでしょうか?




普通はしませんね。

で、どう別けるかというのは、業務要件・アプリケーション要件によって変わります。
会計系等、年度単位の管理をするようなものは年度単位で別ける(シノニム等)のが
普通ですが、生産管理等連続的なもので、年度や年をまたがった検索等が常に発生する
ようなものは、単純に年度や年で別けるとかえってパフォーマンス劣化を起こすので、
工夫が必要でしょうね。

※10年前のデータってほんとに必要なの?保管だけなら別でも良いのでは?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-03-29 14:13
引用:

jamiroさんの書き込み (2005-03-29 13:53) より:
オラクルで年間400万件(行数)x10年分保管という大きなデータを
1つのテーブルとして考えているのですが、やはり最大4000万行と
なると現実的ではないのでしょうか?


Oracleではそんな時のためにパーティション表と言う機能が用意されている。
jamiro
会議室デビュー日: 2004/09/10
投稿数: 8
投稿日時: 2005-03-30 09:00
皆様 早々の書き込みありがとうございました。

業務要件の関係で、これ以上の正規化は不可のため年度ではなく、業務区分で
パーティション化してみようと思います。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2005-03-30 11:24
最近のデータしか検索しないなどということであれば年毎にパーティション化するのが有効だと思います。

ちなみに4000万件のデータに対して10万件のデータをINSERTするときの時間は10分前後だと思います。ただし、インデックスを作成したりするとキャッシュサイズやディスク配置によって大幅にINSERT速度が低下する恐れがありますので適度にSTATSPACKなどを利用してチューニングを行う必要があると思います。
1

スキルアップ/キャリアアップ(JOB@IT)