[pgsql-jp: 30981] Re: 大容量データの更新方法

GT perl @ getpresent.com
2003年 9月 7日 (日) 22:16:10 JST


GTと申します。

いつもお世話になっております。

皆様色々とありがとうございました。
とても勉強になることばかりでうれしい限りです。

> 処理時間が掛ることを問題にしているようですが、
> それは現実に問題となっているのでしょうか。
> 実際に、数百万件分のテストデータを用意して、
> 更新を行ってみてはどうでしょうか。

まずはTaokaさんが仰るとおり試してみようと思います。

> 一般解かどうかはわかりませんが、私だったらviewで解決します。

こちらも勉強してみます。

> テーブル名を変更する、という設計はするべきではありません。

このようなご意見も私の知りたい基本的な情報で勉強になります。

色々な書籍を見てもサンプルコードばかりで
初心者がやりそうな「これをしてはいけない」といった情報が
なかなか知ることができません。
このようなことをやるとこうなるから止めろ
といった実例みたいなことも掲載した書籍があると助かるのですが...

> ユーザが標準であるReadCommittedという隔離レベルでAにアクセスしていると
> 省略
> いちばん簡単な方法は単にトランザクションを使って更新することだと思います。

まずは試してみます。

> 例えば、Aを100万件更新するのに時間がかかりすぎるというのならば、Bにレ
> コードを追加する作業は、それ以上の時間を要すると思いますよ。

該当データを探しながらそのデータの変更や削除を行うより
新規に登録を行う方が時間が掛かるとは知りませんでした。
こちらも勉強になります。

>> Aと言うファイルがありこのファイルのデータを毎日変更や削除(更新)したい。
>> が、データが多いため変更や削除をするには処理時間が掛かるので
>> Bというファイルを用意し、とりあえずこれに新しいデータを書き込む。
>> 書き終わったらAを削除するのと同時に、Bのファイル名をAに変更する。
>> 
>> ということがしたいのですがこれでわかりますでしょうか^^;
>> 
>> これもトランザクションというのでしょうか?
> 
> 変更や削除を一連の作業で行い、最後にDBに反映するのが目的であれば、
> それはトランザクション処理ですね。

これもトランザクションというのですね

勉強になることばかりで助かります。

また変な質問をすると思いますがその際はよろしくお願いします。
まずは試してみようと思います。

 皆様ありがとうございました。




pgsql-jp メーリングリストの案内