为什么同一行记录要尽量存储在同一个block中?

查询数据库时,整行查询或者查询一行中多个字段的概率很高。 如果不同字段分布在不同block中,那么这次查询就要读取多个block.

1. 由于磁盘读取是以block为最小单位的,读取多个block意味比起只读一个block要多读出很多数据,增加transfer time不说,还会浪费内存。

2. 如果这些block不是连续的,那还会增加磁盘的seek time和rotational latency (
术语解释)

上面是读,写其实也是一样的。

推论:

1. 如果一行记录需要跨多个block, 也应该选择同一个track上的blocks(只有一次rotational latency) 或者同一个cylinder上的多个 blocks(只有一次seek time)

2. 如果多行记录被同时取出的概率很高,也应该如上安排,放在一起。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.