- - PR -
Oracle 行数が多いDBのテーブル設計
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-03-29 13:53
大規模なDBを扱ったことがないのでご教授いただきたいのですが?
オラクルで年間400万件(行数)x10年分保管という大きなデータを 1つのテーブルとして考えているのですが、やはり最大4000万行と なると現実的ではないのでしょうか? テーブルに対する処理は、日付検索(対象:約1000件)や期間検索(対 象:約100件)程度です。 また、現実的でなければテーブルを年単位で10分割するとパフォーマンスは 改善されるのでしょうか? | ||||
|
投稿日時: 2005-03-29 13:58
あの〜抜本的に
正規化して分けた方が良いと思うんですが。 (^^ゞ _________________ Inspired Ambitious ISMS Assistant Auditor | ||||
|
投稿日時: 2005-03-29 14:07
普通はしませんね。 で、どう別けるかというのは、業務要件・アプリケーション要件によって変わります。 会計系等、年度単位の管理をするようなものは年度単位で別ける(シノニム等)のが 普通ですが、生産管理等連続的なもので、年度や年をまたがった検索等が常に発生する ようなものは、単純に年度や年で別けるとかえってパフォーマンス劣化を起こすので、 工夫が必要でしょうね。 ※10年前のデータってほんとに必要なの?保管だけなら別でも良いのでは? | ||||
|
投稿日時: 2005-03-29 14:13
Oracleではそんな時のためにパーティション表と言う機能が用意されている。 | ||||
|
投稿日時: 2005-03-30 09:00
皆様 早々の書き込みありがとうございました。
業務要件の関係で、これ以上の正規化は不可のため年度ではなく、業務区分で パーティション化してみようと思います。 | ||||
|
投稿日時: 2005-03-30 11:24
最近のデータしか検索しないなどということであれば年毎にパーティション化するのが有効だと思います。
ちなみに4000万件のデータに対して10万件のデータをINSERTするときの時間は10分前後だと思います。ただし、インデックスを作成したりするとキャッシュサイズやディスク配置によって大幅にINSERT速度が低下する恐れがありますので適度にSTATSPACKなどを利用してチューニングを行う必要があると思います。 | ||||
1
