Patent ID: 9495419
Filing Date: 2016-11-15
CPC Classification: G06F

Claim Text:
1. A method for optimizing a multi-index database access at runtime, the method comprising: receiving, by one or more processors, a query that includes at least one predicate that is associated with a key to an index to a table, wherein the index is implemented in a B-tree data structure; determining, by one or more processors, a plan to satisfy the query and a record identifier (RID) results threshold for the plan, wherein i) the plan includes an access to the index, and ii) the RID results threshold is adaptively changed during execution of the plan based, at least in part, on an estimation of the size of the table; determining, by one or more processors, a static risk threshold; determining, by one or more processors, a static risk for the access based, at least in part, on analyzing statistics on the index, and wherein the statistics on the index includes an estimate of at least one of i) a cardinality of the index, ii) a number of entries in the index, and iii) a greatest number of a same value in the index; responsive to the static risk for the access exceeding the static risk threshold, determining, by one or more processors, a risk bound for the access based, at least in part, on analyzing statistics on the index, wherein the statistics on the index include an estimate of at least one of i) a cardinality of the index, ii) a number of entries in the index, and iii) a greatest number of a same value in the index; responsive to the static risk for the access exceeding the static risk threshold, linking, by one or more processors, the access to the risk bound; executing, by one or more processors, the access to the index with the key; responsive to the access being linked to the risk bound, determining, by one or more processors, a dynamic risk for the access during execution of the access, wherein the dynamic risk for the access is based, at least in part, on an estimate of a fraction of a number of entries for the key relative to a total number of entries in one or more non-leaf nodes in the index; responsive to the access being linked to a risk bound and the dynamic risk of the access exceeds the risk bound, aborting, by one or more processors, the access during the execution of the plan, wherein aborting the access during the execution plan includes, but is not limited to, performing a table scan of the table; receiving, by one or more processors, one or more RID results during the execution of the plan; and responsive to the one or more RID results being less than the RID results threshold, aborting, by one or more processors, the execution of the plan.