СПОСОБ И УСТРОЙСТВО ДЛЯ ОПРЕДЕЛЕНИЯ ПЛАНА ИСПОЛНЕНИЯ SQL

1. Способ для определения плана исполнения языка структурированных запросов, SQL, при этом план исполнения SQL соответствует по меньшей мере одной таблице отношений, и во время N-й итерации, содержащий:
получение первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-й итерации, при этом N является натуральным числом, большим чем 1;
установление второго дерева плана согласно упомянутому первому итерационному параметру;
исполнение упомянутого второго дерева плана;
запись второго итерационного параметра, сформированного, когда исполняется упомянутое второе дерево плана;
определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение; и
обновление упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру и использование обновленного первого итерационного параметра в качестве первого итерационного параметра во время (N+1)-й итерации, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение.
2. Способ по п. 1, при этом упомянутое первое пороговое значение равно 0, и соответственно, определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение, содержит определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда упомянутое второе дерево плана является таким же, как упомянутое первое дерево плана.
3. Способ по п. 1, при этом упомянутый первый итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
4. Способ по п. 1, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый первый итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
5. Способ по п. 1, после определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, дополнительно содержащий:
запись состояния плана исполнения SQL в качестве определенного состояния.
6. Способ по п. 1, при этом упомянутый второй итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
7. Способ по п. 1, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый второй итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
8. Способ по п. 1, до обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру, дополнительно содержащий:
когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установление второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.
9. Способ по п. 8, после установления второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру, дополнительно содержащий:
запись времени исполнения для исполнения упомянутого второго дерева плана; и
когда N больше, чем второе пороговое значение, использование упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.
10. Способ по п. 9, после использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL, дополнительно содержащий:
запись состояния плана исполнения SQL в качестве определенного состояния.
11. Способ по п. 1, до обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру, дополнительно содержащий:
запись времени исполнения для исполнения упомянутого второго дерева плана; и
когда N больше, чем третье пороговое значение, использование упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.
12. Способ по п. 11, после использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL, дополнительно содержащий:
запись состояния плана исполнения SQL в качестве определенного состояния.
13. Способ по п. 1, при этом обновление упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру содержит:
получение набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра и использование результата набора объединения в качестве упомянутого первого итерационного параметра.
14. Способ по п. 1, при этом способ дополнительно содержит:
когда выполняется изначальная итерация, установление изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки;
исполнение изначального дерева плана для получения изначального итерационного параметра; и
обновление итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра.
15. Способ по п. 14, при этом итерационный параметр оценки содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
16. Способ по п. 14, при этом изначальный итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
17. Способ по п. 14, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, изначальный итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
18. Способ по п. 14, при этом обновление итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра содержит:
получение набора объединения из изначального итерационного параметра и итерационного параметра оценки и использование результата набора объединения в качестве упомянутого первого итерационного параметра.
19. Способ по п. 14, при этом до того, как выполняется изначальная итерация, способ дополнительно содержит:
запрашивание, является ли состояние плана исполнения SQL определенным состоянием; и
когда состояние плана исполнения SQL является определенным состоянием, исполнение плана исполнения SQL.
20. Устройство для определения плана исполнения языка структурированных запросов, SQL, при этом план исполнения SQL соответствует по меньшей мере одной таблице отношений, причем устройство содержит память и процессор, подсоединенный к памяти, и во время N-й итерации процессор выполнен с возможностью:
получения первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-ой итерации, при этом N является натуральным числом, большим чем 1;
установления второго дерева плана согласно упомянутому первому итерационному параметру;
исполнения упомянутого второго дерева плана;
записи второго итерационного параметра, сформированного, когда исполняется упомянутое второе дерево плана;
определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение; и
обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру и использования обновленного первого итерационного параметра в качестве первого итерационного параметра во время (N+1)-й итерации, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение.
21. Устройство по п. 20, при этом упомянутое первое пороговое значение равно 0, и соответственно, определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение, содержит определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда упомянутое второе дерево плана является таким же, как упомянутое первое дерево плана.
22. Устройство по п. 20, при этом упомянутый первый итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
23. Устройство по п. 20, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый первый итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
24. Устройство по п. 20, при этом после определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL процессор дополнительно выполнен с возможностью:
записи состояния плана исполнения SQL в качестве определенного состояния.
25. Устройство по п. 20, при этом упомянутый второй итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
26. Устройство по п. 20, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый второй итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
27. Устройство по п. 20, при этом до обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру процессор дополнительно выполнен с возможностью:
когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установления второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.
28. Устройство по п. 27, при этом после установления упомянутого второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру процессор дополнительно выполнен с возможностью:
записи времени исполнения для исполнения упомянутого второго дерева плана; и
когда N больше, чем второе пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.
29. Устройство по п. 28, при этом после использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL процессор дополнительно выполнен с возможностью:
записи состояния плана исполнения SQL в качестве определенного состояния.
30. Устройство по п. 20, при этом до обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру процессор дополнительно выполнен с возможностью:
записи времени исполнения для исполнения упомянутого второго дерева плана; и
когда N больше, чем третье пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.
31. Устройство по п. 30, при этом после использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL процессор дополнительно выполнен с возможностью:
записи состояния плана исполнения SQL в качестве определенного состояния.
32. Устройство по п. 20, при этом процессор в частности выполнен с возможностью:
получения набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра и использования результата набора объединения в качестве упомянутого первого итерационного параметра.
33. Устройство по п. 20, при этом процессор дополнительно выполнен с возможностью:
когда выполняется изначальная итерация, установления изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки;
исполнения изначального дерева плана для получения изначального итерационного параметра; и
обновления итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра.
34. Устройство по п. 33, при этом итерационный параметр оценки содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
35. Устройство по п. 33, при этом упомянутый изначальный итерационный параметр содержит кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.
36. Устройство по п. 33, при этом, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, изначальный итерационный параметр дополнительно содержит кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.
37. Устройство по п. 33, при этом процессор в частности выполнен с возможностью:
получения набора объединения из изначального итерационного параметра и итерационного параметра оценки и использования результата набора объединения в качестве упомянутого первого итерационного параметра.
38. Устройство по п. 33, при этом до того, как выполняется изначальная итерация, процессор дополнительно выполнен с возможностью:
запрашивания, является ли состояние плана исполнения SQL определенным состоянием; и
когда состояние плана исполнения SQL является определенным состоянием, исполнения плана исполнения SQL.
39. Устройство для определения плана исполнения языка структурированных запросов, SQL, содержащее процессор, память, шину и интерфейс связи, при этом
память выполнена с возможностью хранения исполняемой компьютером инструкции; процессор соединен с памятью посредством использования шины; и, когда устройство для определения плана исполнения SQL работает, процессор исполняет исполняемую компьютером инструкцию, сохраненную в памяти, для того чтобы устройство для определения плана исполнения SQL выполняло способ для определения плана исполнения SQL по любому из пп. 1-19.