- ベストアンサー
ある表の更新分を、別の表に格納する方法
度々お世話になります。 初歩的な感じがする質問で恐縮ですが 2つの異なるDBがありまして 同じ構成のテーブルを持っております。 片側にしか更新がかからないので その差分をもう片方に反映させたいと考えております。 ※深夜に一回反映するようなイメージでおります。 何か簡単な方法でデータを持ってくる方法はありませんでしょうか。 マテリアライズドビューでの レプリケーションをやる予定のテーブルもあるので いったんコピー先の表を削除して マテビューでレプリカを作るというのも視野に入れております。 ※アプリ側に影響が出そうなので、あまりやりたくないのが実情です。 ※クエリーリライトなる機能を使えば、問題ないのでしょうか…?? 一日15万レコードほど増えるような大きいの表なので いくつか種類があればパフォーマンスの面からみて よさそうなものを検討したいと考えております。 何卒宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今ある表をマテビューに置き換えることはアプリ側には一切影響は 無いはずです。マテビューはアプリ側から見ると表と同一に見えますから。 マテビューのリフレッシュを夜間に一回するのが一番要件にも合っていますし、 分かりやすいやり方だと思います。 一つ気をつけないといけないのが差分リフレッシュを使うのであれば マスタ(テーブル)側のDBで差分用ログテーブルの領域を別途容量として 見積もる必要があります。 毎回反映側を空にして元側のデータを完全に入れなおすのも 性能的に大丈夫なのであればマテビューの完全リフレッシュや ストアドプロシージャを使ってもいいかと思います。 こちらの場合は差分ではないので容量は増えません。
その他の回答 (1)
- tailwind
- ベストアンサー率50% (1/2)
データの同期を1日1回でメンテする時間を確保できるような システムであれば,コピー先をTRUNCATEしてダイレクトINSERTという 方法がパフォーマンスはよいです. さらに,EnterpriseEditionでかつPartitionOptionがあれば, パーティション単位で上記の処理が実行可能なので, 管理性と性能の両面で良いと思います.
お礼
お返事遅くなりました。 24時間稼動なので、TRUNCATEはできませんが 今後の参考にさせていただきます。
お礼
ご回答ありがとうございました。 マテビューで更新することに決まりました。