暂无图片
db2 中List Prefetch 是啥场景用到的?
我来答
分享
暂无图片 匿名用户
db2 中List Prefetch 是啥场景用到的?

db2 中List Prefetch 是啥场景用到的? 能否给个例子

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
shunwahⓂ️

db2 中List Prefetch 表示 I/O列表预取

I/O列表预取(List Prefetch I/O)

如果数据库表中的连续数据页在磁盘上并非相邻的(根据数据也物理地址可以进行大致判断),那么I/O顺序预取就无法达到预期的效果,并且可能还会因为预取的额外开销影响I/O性能。

对于这种情况,DB2提供另外一种I/O预取类型:列表预取(List Prefetch)。在这种I/O方式中,数据库系统预先向磁盘控制器提供一个记录一部分需要被读入内存缓冲池的数据页的列表,磁盘控制器根据这个列表和特定的算法(如最短寻道算法、电梯算法等)来产生一个开销最小的磁盘臂移动方案。按照此方案完成清单上所有的数据页的读入后,再将另一系列数据页按此方式读入内存。下图展示了对于同一个请求数据页集合,两种不同的算法的寻道开销是不同的:

很显然,列表预取的效率是大大低于顺序预取的(后者几乎消除了寻道时间和旋转延迟,前者只是试图将寻道时间和旋转延迟最小化),但是它比随机I/O还是要快上很多的。使用列表预取,一次I/O开销的平均值为0.005 秒。下图是三种I/O方式每秒读取的数据页数的比较:

I/O预取只有对于大量的I/O才是比较有意义的,少量数据的I/O会直接使用随机I/O方式进行访问。另外,I/O预取不仅可以用于数据页的读取,同样也适用于索引页(索引页本质上也是数据页)。

I/O预取和I/O并行并不是不相容的,可以在每一个并行的磁盘设备上采用I/O预取策略,这样就能够进一步提高 I/O性能。

https://blog.csdn.net/qq_39552268/article/details/112123216

暂无图片 评论
暂无图片 有用 2
打赏 0
李宏达
2022-11-05
严少安
2022-11-07
👍‍
李宏达

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交