查询数据库时,整行查询或者查询一行中多个字段的概率很高。 如果不同字段分布在不同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. 如果多行记录被同时取出的概率很高,也应该如上安排,放在一起。