2016-11-23 8 views
0

私たちのシステムには、ライブデータベースとアーカイブデータベースがあります。ライブデータベースの毎日のデータは、アーカイブデータベースに移動されます。毎日、異なるテーブルに約200万のデータを生成しました。Oracleデータベースの手動テーブル分割

データを10年間保存する必要があるため、アーカイブ目的とバッチ処理を使用して真夜中にデータをプッシュする別のOracleデータベースを作成しました。

データが急速に増加するため、アーカイブデータベース内のテーブルにデータを保存することに懸念があります。私たちはOracleのパーティション分割ライセンスを持っていないため、毎月10年間のテーブルを作成しています(合計120テーブル)。

私たちのアーカイブデータベースはより多くの書き込みがあり、読み取り専用はほとんどありません。テーブルを複数のテーブルに分割することで、パフォーマンス/ストレージに関して実証済みの利点はありますか?

よろしく、 Mayuran

+0

1日= 2 mlnレコード... 1か月= 60 mlns ...あなたの解決策はOKだと思います。すべてのデータを1つのテーブルに入れると、将来同じテーブルのデータ量によって問題になる可能性があります – are

答えて

1

はいあります。パーティション・ライセンスがなく、1つの表にすべてのデータを格納すると、複数の表領域に分割することはできません。しかし、複数の表を作成する場合は、毎年のように表スペースを作成できます。これにより、より頻繁に照会される新しいものよりも悪い読み取りを伴う、より少ない頻度で照会される10年前のデータを保管することが可能になります。
もしあなたが持っているなら、別の償還額はインデックスのサイズです。もちろん、照会するテーブルを決定するロジックが必要です(例えば、procに渡された月を基準にしてref cursorを返すプロシージャ)。この手動による決定をアプリケーション側またはdb側に適用すると、インデックスは1よりも小さくなります。
若干の期間が10年以上あるときには、接尾辞テーブル_1015を落とすだけです(私は月と年の接尾辞をお勧めします)。削除、縮小などの必要はありません。

関連する問題