2011-06-21 7 views
0

最近、私はデータベース管理システム(Raghu RamakrishnanとJohannes Gehrke)を読んでいます。ディスク・スペース・マネージャーは、ページを単位とした割り振り/割り振り解除/読み取り/書き込み操作を担当し、1つのヘッドで最大のデータ操作量を読み取り/書き込み可能にし、時間を最小限に抑えます。 nはページサイズ「ページ」単位でディスクに書き込む

2-メモリ内のバッファに

1-書き込みのnバイトのデータ - を次のように今達成するために、ディスクに1ページを書くために、機能を言う私が行うことができますC++(ofstream)での単純なファイルI/O操作を使用して、このバッファをファイルに書き込みます。

これらのnバイトは、ディスク上の1ページとして正常に書き込まれますか、このプロセスを使用すると、バッファがディスクに書き込まれるのを防ぐことができます。サイズはページサイズと同じです。場合は、1ページとして書かれません、どのような方法を採用する必要がありますか?どうもありがとう!

答えて

0

通常、データベースシステムは直接I/Oを使用してメモリ内のページをディスクに永続化します。データベースシステムは、OSまたはバッファされたライブラリによってバッファされない直接I/Oによってディスクの書き込みを制御、推定、最適化することができます。

あなたは以下のリンクで、OSのシステムコールを参照することができます:

  1. UNIX-Like: open(2):私はバッファリングされている場合でもFILE_FLAG_WRITE_THROUGH

をチェックアウト:O_DIRECTフラグ

  • Windows: CreateFileをチェックしてください/ Oライブラリにはflush()メソッドがありますが、OSはそれを保証しませんflush()が呼び出されると、データはディスクの正しい方法で保持されます。

  • 関連する問題