—
机长请求本次飞机的乘客名单
完成query的资源分配和授权后,可以进行query的执行。该步骤通过relational query processor来执行。 这部分模块先检查user的授权信息,然后将query的文本编译成internal query plan,编译完成后交由 plan executor来执行。plan executor里集成了operator,这些operator都是具体关系算法的实现, 用来实现例如join等方法。
在query plan的底层,一些operator从数据库中请求数据,他们通过调用 transactional storage manager来完成任务。 该组件用来完成所有的数据访问和数据操作的任务。这个存储系统拥有用来控制和访问磁盘数据的算法和数据机构。(access methods), 例如table 和 indexes。他还有buffer manager来决定 buffer和disk的数据传输。 回到请求query的过程,在利用access methods 访问数据的时候,query先要调用transaction manage code来保证transaction的acid属性。 在访问之前,先要向lock manager请求锁来保证query并发执行的正确性。当query更新数据库的时候与log manager交互来保证commit的 时候系统是durable的,否则undone.
现在可以进行访问数据和计算结果的过程。整个过程是一个清空栈的过程。 access methods 返回控制给plan executor operator,来处理计算结果,生成tuple后通过communication manager 来将 结果返回给请求者,大量数据请求者通过多次请求来获取数据。然后 数据库进行资源的释放。