数据库小表数据操作所需的内存空间和磁盘I/O

这里说的小表,是指所有数据基本上可以被内存容纳的表

1. 选择、投影操作

所需内存空间:1个block大小对应的内存(称为1个内存单位,下同);这里可以使用iterator模式,即找到一条block就立即返回一个block,所以只须1个内存单位

磁盘I/O次数: 该表记录所占的block数,因为你需要全部扫描一遍。(不考虑使用索引的情况,下同)

2. Count/Max-Min/Sum/Select Distinct

所需内存空间:表记录占了多少个block,就需要多少个内存单位。对于这类操作,你无法使用iterator模式; 你必须把所有记录加载到内存中,才能得出最终结论。所以你需要N个内存单位 。

磁盘I/O次数:该表记录所占的block数,因为你需要全部扫描一遍

3. 连接操作

所需内存空间: min(A表的block数,B表的block数).  因为你需要把其中较小的一个表全部加载到内存中,再与另外一张表连接。

磁盘I/O次数:A表记录所占的block数 + B表记录所占的block数。 两张表你都需要扫描。

Leave a Comment

Your email address will not be published.

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