查询执行的代价衡量

        数据库在执行SQL操作的时候,经过语法分析、SQL重写、生成物理查询计划等步骤。语法分析也即查询编译,生成SQL树。SQL重写根据代数规则(如结合律、交换律等)变换SQL执行计划。物理查询计划设计到具体的算法,如表扫描选择顺序扫描还是索引扫描;join算法选择nest loop join、merge join还是hash join等。

       在生成物理查询计划的时候,需要由优化器来衡量最佳的执行算法。耗时=IO+内存+CPU,对于数据库查询来说,主要的耗时在于IO,所以焦点就是如何减少IO扫描次数。

      衡量查询代码的模型:

             数据条数(T):也即数据行数,数据表元组的数目

             数据量块个数(B):多行记录以数据块为单元保存磁盘上,如PostgresQL为8kB的数据库块,按一行记录100b计算,大概每个数据块可放655行。

            内存块个数(M):次数假设每个内存块和数据块的大小一致

 一趟算法:

     基于元组的:

...

     基于关系的:

...

二趟算法:

 

 

你可能感兴趣的:(数据库实现)