web-dev-qa-db-ja.com

インメモリテーブルは、メモリにキャッシュされたテーブルよりも読み取りが高速ですか?

インメモリ(別名Hekaton)テーブルは、SQLサーバーのメモリに既にキャッシュされている非インメモリテーブルよりも読み取りが高速ですか?

私のテーブルの1つをメモリ内テーブルに変換することを検討しているケースがあるので、これを尋ねますが、現在、メモリキャッシュへのロードはかなり高速ですが、ロードされた後の読み取り/操作のパフォーマンスはキャッシュへのアクセスが遅い場所です。

このテーブルをインメモリテーブルに変換することで、潜在的なパフォーマンスの向上を確認できますか?

2
J.D.

オンディスクテーブルが既にキャッシュされているときに読み取りが遅いときに発生する待機タイプは何ですか?

メモリ最適化テーブルは、読み取りではなく書き込み用に最適化されているため、Hekatonへの移行によるパフォーマンスの向上はほとんど見られません。

2
NedOtter

メモリ内のテーブルを必要とする ネイティブにコンパイルされた プロシージャを使用すると、大幅なスピードアップが見られます。もちろん、多くの警告があります。

インメモリは、RAMでディスクベースのテーブルとは異なるデータ構造を使用します。また、 [〜#〜] mvcc [〜#〜] を介して同時実行性を強制しますロック(デフォルトのREAD COMMITTED分離レベルで使用されます)。これにより、他のトランザクションのロックが解放されるのを待つ必要がなくなります。これにより、メモリ内の(概して)複数の同時実行に対する従来のアプローチよりも高速に実行されることが示唆されます。トランザクション。

サーバーの動作が異なることに注意してください。たとえば、従来、書き込みが競合している場合、2番目の書き込みは、最初の書き込みが完了するのを待ってブロックします。インメモリMVCCを使用すると、ロールバックされます。クライアントアプリケーションは、これ(および他の多くの違い)を考慮する必要があります。データとワークロードを備えたハードウェアで、追加の作業がメリットに値するかどうかは、あなたしか言えません。

1
Michael Green