DBのVIEW(ビュー)が物理的に保持されるのか?

DBのVIEW(ビュー)が物理的に保持されるのか? タイトルの通り、DBMSのoracleにおいて、viewを使っている場合、 viewのデータは、ひとまず物理的にメモリに記憶されると思います。(テーブルデータの参照や更新と同様の状況) ただし、テーブルは存在しないため、チェックポイントやコミットによってファイルシステム上のデータファイルに物理的に記録されるのかどうかが調べていても分からず質問をしました。 通常のテーブルデータであれば、メモリに展開され、更新があればコミット時に操作内容がログに記録され、その後チェックポイントの到達時点でデータファイルにあるテーブルデータへコミットログと同期を仕掛けると理解しています。 (違っていたら指摘ください) もし上記の理解であれば、テーブルデータが存在しないVIEWはメモリにしかいない為、OracleやOSの再起動が必要となるトラブル時には消失するのではないかと想像しているのですが合っていますか? (通常はファイルシステムに物理的に記録されていればOS再起動があってもデータは消えない) 色々と書きましたので、質問内容を整理します。 ①VIEWでアクセスしたデータ結果は、Oracle或いはOSの再起動で消えますか?(理由も) ②「チェックポイントの到達時点でデータファイルにあるテーブルデータへコミットログと同期を仕掛ける」という理解はあっていますか?(間違っていれば解説も) 上記2点を教えていただけないでしょうか?

Oracle | データベース14閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

0

viewと言うのはviewをselectする時に物理テーブルからデータを取ってくるので、当然DBMSが停止すればselectした内容は消えます。 もちろん稼働中はある程度の時間はメモリに残されているでしょうけど、基本的にはviewのselect->物理テーブルのリードです。 非常に簡単に言えば毎回ややこしいselect文を書かずに済ませたいからviewを定義する、と言うだけのことです。 ただ、現在では毎回selectするのも無駄があるので、マテリアライズドviewと言うviewに相当する物理テーブルを作るものもあります。これはベースとなるテーブルが変化した時には再作成されたりします(確か設定で変える)。

例えばDBサーバからDBサーバのやりとりの場合を想定します。 ※どちらかがクライアント 物理テーブルとはサーバのメモリとファイルのどちらを利用した存在でしょうか?(マテリアライズドビューの場合) 何が知りたいのかというと、私の基礎理解ですとメモリは揮発があるためファイルに記載しないと存在として確定しない(消えるリスクが高い)状態と思っています。 つまり物理テーブルとは存在が確定された=ファイルに記載されているから消えない状態になっていると読み取ってよいでしょうか? ※だから再起動しても消えずに通信せずに復元できる。 単なるビューですとメモリへ記憶するだけ

ThanksImg質問者からのお礼コメント

より知りたい情報を回答いただきました方を選ばせていただきました。 ありがとうございました。

お礼日時:9/14 22:20

その他の回答(1件)

0

1. 消えない。Viewはあくまで、読み取り専用の定義されたデータセットであり、それは物理表が元になっている。 2. Viewは物理データを持っていない。 だからViewに対して更新はそもそも出来ない。

早速ありがとうございます。 質問の仕方が悪かった可能性があるため、改めて言い方を変えさせてください。 ①VIEWでアクセスした結果を受けた受信側DBサーバは、メモリに展開されている(データ・セット)だけで、ファイルとして記録が無い為、Oracle或いはOSの再起動で消えるのではないかと考えているのですが、消えない仕組みがあるのでしょうか? ②の物理データとは、dbfファイルに記載されているテーブル定義と紐づくデータという意味で合っておりますか? 理解が浅い為、言葉遣いがおかしいかもしれませんが、丁寧に記載したつもりですので、ご容赦ください。