Part 4 高效的查询处理
在第三部分中,我们的关注点主要在于创建一个简单同时也功能完备的数据库系统。不幸的是,正是这种“简单”的实现为我们带来了代价—SimpleDB创建的查询计划(即plan
)非常不高效。对于一些小的数据库而言,SimpleDB的不高效似乎还可以忍受,但是对于某个大型数据库的某个多表查询,可能需要几年的时间来执行一个查询任务,对于任何一个希望可以实际运行的数据库而言,这显然是不能接受的。在第4部分中,我们将主要关注高效性相关的问题。
之所以SimpleDB查询处理不高效的原因主要有两个:
关系代数的实现很不高效;
查询计划器(
planner
)采取的策略非常naive。
接下来的4章中我们将依次考虑这些问题。第21-23章将介绍3种技术来实现高效的关系代数操作:索引(indexing
)、固化查询(materialization
)以及对查询的输出排序(sorting
)、更好地使用缓冲区(buffers
)。第24章将考虑查询计划处理相关的问题,我们将学习查询计划器(planner
)是怎样从多个等价的关系代数操作中得到那个效率最高的查询的,并且学习在关系代数树中不同操作的不同实现。
Last updated
Was this helpful?