先行読み取り
from SQL Serverのデータ変更時の基本動作https://gyazo.com/b456e50533abb642611d916c5c75eef3
将来必要になると予想されるデータもデータファイルからメモリへ読み込み、I/Oのオーバーヘッドを緩和している
SQL Serverのバージョンによって差があるらしい
どのくらいのページを読み込むかはエディションによって異なる
どこでどうやって予想してるんだろう?
このメモリ領域をバッファキャッシュと呼ぶ
code:先行読み取り
+ユーザー---------------+ クエリ +SQL Server-+ +データファイル-----------------+
| SELECT c FROM table1 | 実行 | | クエリ | +table1.year---------------+ |
| WHERE year > 2011 | ------> | | -------> | | 2009201020112012 | |
| AND year < 2014; | | バッファ | <------- | | 2013201420152016 | |
+----------------------+ | キャッシュ | 多めに | +--------------------------+ |
+-----------+ 読み込み +------------------------------+
code:mmd
flowchart
subgraph ユーザー
sqlselect c from table1 \n where year > 2011 and year < 2014
end
subgraph sqlserverSQL Server
subgraph データファイル
subgraph table1.year
2009 ~~~ 2013
2010 ~~~ 2014
2011 ~~~ 2015
2012 ~~~ 2016
end
end
バッファキャッシュ
end
sql -- クエリ実行 --> sqlserver
sqlserver -- クエリ --> データファイル
table1.year -- 範囲外のデータも取り込む --> バッファキャッシュ