Index Lookup Join
IndexLookUpJoin Struct
主要流程
执行index lookup join时候,会启动一个outerWorker go routine和多个innerWorker go routine, go routine之间通过innerCh和resultCh来协作, 他们关系如下:
outerWorker
负责读取probe side 数据,然后建立map,创建完毕后,将task 同时放入innerCh
中和resultCh
中innerWorker
从innerCh取task,去inner表取数据,执行完毕后,将task的doneCh close用以通知Main线程(执行IndexLookupJoin.Next的groutine)- 调用IndexLookupJoin.Next的groutine从 resultCh中取一个task, 然后等待task执行完毕,执行完毕后做join, 将数据返回给上层调用者。
buildTask
buildTask builds a lookUpJoinTask and read outer rows.
When err is not nil, task must not be nil to send the error to the main thread via task.