【ライトアラウンドキャッシュ】

Write-Aroundキャッシュ とは?

最終更新:
💡 書くときは棚を迂回、読むものに場所を残す

書き込み時にキャッシュを迂回して保存先へ書く方式。書いた直後にあまり読まれないデータでキャッシュの圧迫を抑えられますが、古いキャッシュを返さない管理も必要です。

📌 このページのポイント
書き込みはキャッシュを迂回アプリ保存先新しい値書くキャッシュ新しい値は載せない古い値があれば、無効化などで管理読むとき、キャッシュになければ保存先から取得・必要なら保持読まない書き込みで棚を圧迫しない
読み取り時の格納や整合性の管理は実装により異なります。
ひよこ ひよこ
なぜキャッシュを迂回するの?
ペンギン先生 ペンギン先生
書き込むデータをすべてキャッシュに入れると、よく読まれるデータの場所を押し出すことがあるからだよ。Write-Aroundでは新しい書き込みを保存先へ送り、そのデータをキャッシュに載せるのを避けるんだ。
ひよこ ひよこ
次に読むときは、どうなるの?
ペンギン先生 ペンギン先生
キャッシュになければ保存先から取得するよ。そのときキャッシュに載せる読み取り方式と組み合わせられる。ただし「遅いのは必ず初回だけ」ではなく、追い出されたり期限が切れたりすれば、また取りに行くこともあるんだ。
ひよこ ひよこ
一度しか書かないデータに向くの?
ペンギン先生 ペンギン先生
書いた回数より、書いた後にどれくらい読むかが大事だよ。大量に書いて直後にはあまり読まない使い方が候補になる。ログやバックアップでも、頻繁に読み返す使い方なら同じ判断にはならないね。
ひよこ ひよこ
古いデータがキャッシュにあったら?
ペンギン先生 ペンギン先生
新しい値を保存先に書く一方で、古いキャッシュをそのまま返さない管理が必要だよ。無効化などの方法があるね。Linuxのbcacheでも、キャッシュを迂回する書き込みに対応する古いデータを無効にする処理があるんだ。
ひよこ ひよこ
Write-ThroughやWrite-Backとの違いは?
ペンギン先生 ペンギン先生
Write-Throughはキャッシュと保存先の両方へ反映し、Write-Backはキャッシュ側の更新を先に扱い、保存先へ後で反映する。Write-Aroundは書き込み時にキャッシュへ新しい値を載せない。どれが速いかや安全かは、実装と読み書きの傾向で判断しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Write-Around」って出てきたら「書き込みはキャッシュを迂回して保存先へ送る方式」と思えばだいたいOK!
📖 おまけ:英語の意味
「Write-Around」 = 書き込み時に迂回する
💬 Aroundは「回り道・迂回」。書くときにキャッシュを経由しないことを表すよ

参考資料

← 用語集にもどる