1

主要なRDBMSがデータを取得する方法についてはほとんど知りません。したがって、これらの質問は少し初歩的なように見えるかもしれません。

  1. Oracle、SQL Server、MySQL、PostgeSQLなどの一般的に使用されるRDBMSの各SELECTは、常にディスクからデータを読み取るためのトリップを意味しますか、それともハードウェアである程度許容できる範囲で、高価なデータを回避するために一般的に要求されるデータをキャッシュしますか? I / O操作?

  2. キャッシュするデータセグメントをどのように決定しますか?

  3. キャッシュされたデータの一部の更新が別のプロセスによって発生した場合、どのようにキャッシュを同期しますか?

  4. さまざまなRDBMSが頻繁に要求されるデータをキャッシュする方法に関する比較マトリックスはありますか?

ありがとう

4

2 に答える 2

2

SQLServerについてお答えします。

  1. 読み取りは、可能であればキャッシュから提供されます。それ以外の場合は、IOが発生します。
  2. 書かれていることと私が観察していることから、それはLRUアルゴリズムです。これはどこにも文書化されていないと思います。LRUアイテムは8KBのデータベースページです。
  3. SQL Serverは、データベースファイルにアクセスできる唯一のプロセスです。したがって、他のプロセスが変更を引き起こすことはありません。同時トランザクションについて:複数のトランザクションで同じページを変更できます。ロック(主に行レベル、場合によってはページレベルまたはテーブルレベル)により、トランザクションが相互に干渉しないようにします。
  4. 知らない。
于 2012-11-21T22:16:49.633 に答える
1

Informixの回答は、SQLServerの回答と非常によく似ています。

  1. 読み取りと書き込みの両方で、可能な限りキャッシュが使用されます。必要なページがまだキャッシュにない場合は、I / O操作の適切なコレクションが発生します(通常、キャッシュから一部のページを削除します。おそらく、新しいページを読み込む前に書き込む必要のあるダーティページを削除してから、新しいページを読み込みます。古いものがあったページ)。
  2. さまざまなアルゴリズムがありますが、ページサイズと使用法が重要な部分です。ページサイズごとにLRUキューがあります。
  3. 全体としてのDBMSは、共有メモリ内のバッファプールを使用し(可能な場合は、カーネルキャッシュを経由せずにディスクI / Oを直接)、さまざまな形式のロック(セマフォ、スピンロック)を使用するプロセスの集合です。 、ミューテックスなど)同時実行と同期を処理します。(Windowsでは、Informixは複数のスレッドを持つ単一のプロセスを使用します。Unixでは、複数のプロセスを使用します。)
  4. おそらくそうではありません。
于 2012-11-22T00:11:10.860 に答える