ホームページ >データベース >mysql チュートリアル >mysqlキャッシュとバッファの違いは何ですか?
mysql キャッシュとバッファの違いは次のとおりです: 1. バッファはブロック デバイスをバッファするために使用され、ファイル システムのメタデータのみを記録しますが、キャッシュはファイルをバッファするために使用されます; 2. バッファは何を保存するために使用されます。コンテンツ、権限などは、キャッシュされている間、開いているファイルを記憶するために使用されます。
mysql キャッシュとバッファーの違いは次のとおりです:
バッファーのコア機能
クッション性があり、衝撃をやわらげます。たとえば、ハードディスクに 1 秒あたり 100 回書き込む必要がある場合、システムに大きな影響を与え、書き込みの開始と終了の 2 つの処理に多大な時間を費やすことになります。バッファを使用して一時的に保存し、10秒ごとにハードディスクに書き込むため、システムへの影響が非常に少なく、書き込み効率が高く快適です。衝撃を大幅に和らげました。
Cache
の中心的な機能は、アクセスを高速化することです。たとえば、非常に複雑な計算を完了し、その結果を次回に使用したい場合は、次回計算する必要がないように、結果をアクセスしやすい場所に保管しておきます。データの取得を高速化します。
したがって、ストレージ システムに注目すると、ハードディスクの読み取りバッファ/キャッシュ名と書き込みバッファ/キャッシュ名が異なり、write-buffer
および と呼ばれていることがわかります。読み取りキャッシュ
。両者の違いは明確に述べられています。
もちろん、多くの場合、マクロ レベルでは 2 つが混在する可能性があります。たとえば、多くの人が実際に読み取りと書き込みの両方に memcached を使用しています。多くの場合、非 SQL データベースにも同じことが当てはまります。厳密に言えば、CPU の L2 キャッシュと L3 キャッシュは読み取りと書き込みの両方に使用されます。これは、CPU が読み取りと書き込みのどちらにキャッシュを使用するかを単純に定義することはできないためです。ハードディスクもその典型ですが、バッファとキャッシュは同じ空間にありますが、バッファなのかキャッシュなのか?
しかし、よく考えてみてください。キャッシュをバッファとして使用しても大丈夫でしょうか?もちろん、キャッシュ追い出しロジックを制御できれば問題ありません。
それでは、バッファをキャッシュとして使用するのはどうでしょうか?非常に特殊な状況で、アクセス順序が決定できる場合には、それも可能であるようです。ちょっと考えてみれば理解できると思いますが、定義上、バッファはランダムに保存する必要があるのでしょうか?通常は必要ありません。ただし、キャッシュは必要です。したがって、ほとんどの場合、バッファの代わりにキャッシュを使用しても問題ありませんが、その逆の場合は制限が大きくなります。これは、技術的にはキャッシュとバッファの重要な違いでもあります。
補足1:
Bufferは書き込み用、Cacheは読み出し用と誤解しないでください。読み取りにバッファを使用できますか?たとえば、読み取りをすべて処理するのではなく、バッチで処理したい場合は、読み取りバッファーを使用できます。もちろん、書き込みが非常にランダムである場合など、書き込み時にキャッシュを使用することもできます。どのシナリオがバッファを使用し、どのシナリオがキャッシュを使用するかは、シナリオの特定のニーズによって異なります。
補足 2:
キャッシュまたはバッファはメモリまたは高速メディア上に存在するものでなければならないということを誤解しないでください。比較的高速な場合に限ります。間違いなくハードディスクにキャッシュを保存できます。たとえば、一部のゲームは実行時にプリコンパイルされたシェーダーを作成します (古いものを公開します)。これは基本的に、遅いハードディスク上に存在するキャッシュです。ハードディスクの読み取りは依然として高速であるためです。再コンパイル中です。同じことがバッファにも当てはまります。たとえば、NTFS ファイル システムには独自のログ バッファがあり、揮発性キャッシュに配置されることさえ明示的に拒否されます。
関連する学習に関する推奨事項: mysql ビデオ チュートリアル
以上がmysqlキャッシュとバッファの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。