|
When Index Condition Pushdown is employed, a single index lookup call like handler->index_read(lookup_tuple,...) can potentially enumerate lots (e.g. hundred of thousands) of index records before it finds one that satisfies the pushed index condition.
The problems are:
P1: MyISAM/Maria hold locks while enumerating those records, which means that one long query may stall others.
P2: For all storage engines: the state of thd->killed is not checked. This means that if one decides to kill the query (with KILL <thread_id> statement), it may take a very long time before the query is actually killed.
There is no testcase: Monty has found this out from the code (and provided a patch to address a problem with mi_rkey())
|