Способ и устройство для определения плана исполнения sql

Изобретение относится к определению плана исполнения языка структурированных запросов (SQL). Техническим результатом является повышение точности плана исполнения SQL для инструкции SQL и эффективности исполнения плана исполнения SQL. В способе для определения плана исполнения SQL получают первый итерационный параметр, сформированный после того, как первое дерево плана исполняется на таблице отношений во время (N-1)-й итерации. План исполнения SQL соответствует по меньшей мере одной таблице отношений. Устанавливают второе дерево плана согласно первому итерационному параметру и исполняют второе дерево плана. Записывают второй итерационный параметр, сформированный при исполнении второго дерева плана. Определяют первое или второе дерево плана в качестве плана исполнения SQL, когда различие между вторым и первым деревом плана не является большим, чем первое пороговое значение. Обновляют первый итерационный параметр согласно второму итерационному параметру и используют обновленный первый параметр в качестве первого итерационного параметра во время (N+1)-й итерации, когда различие между вторым и первым деревом плана является большим, чем первое пороговое значение. 3 н. и 36 з.п. ф-лы, 10 ил.

 

ОБЛАСТЬ ТЕХНИКИ

[0001] Настоящее изобретение относится к области компьютерных технологий и, в частности, к способу и устройству для определения плана исполнения SQL.

УРОВЕНЬ ТЕХНИКИ

[0002] Для исполнения инструкции SQL (языка структурированных запросов, Structured Query Language) в общем, необходимо три стадии: стадия лексического и синтаксического анализа, стадия для определения плана исполнения SQL и стадия для исполнения плана исполнения SQL.

[0003] В частности, инструкция SQL относится к результату, желаемому пользователем. Например, инструкция SQL может быть запрашиванием всех клиентов, живущих в Пекине. Однако инструкция SQL не говорит серверу, как исполнять инструкцию SQL. Поэтому, после того, как сервер принимает команду запроса (Query) и после того, как определяется на стадии лексического и синтаксического анализа, что команда запроса является синтаксически правильной, формируется дерево синтаксического анализа (Parse Tree). Сервер ищет в базе данных сервера связанную статистическую информацию, которая уже собрана, и определяет предпочтительный план исполнения SQL для инструкции SQL со ссылкой на дерево синтаксического анализа. План исполнения SQL может быть получен методикой дерева плана (Plan Tree). Узлы на дереве плана включают в себя несколько базовых операций, например, базовые операции, такие как обзор нескольких таблиц и выполнение вложенного соединения или хэш-соединения. В конечном счете, сервер исполняет план исполнения SQL согласно полученному дереву плана, и результат вывода является результатом, представленным инструкцией SQL.

[0004] Может быть выяснено, что эффективность исполнения инструкции SQL зависит до некоторой степени от того, может ли быть определен эффективный план исполнения SQL. Однако в предшествующем уровне техники статистическая информация в базе данных, в общем, является собственным значением, полученным на основе значения выборки, например, собственными значениями, такими как кортеж отношений (RelTuples) в таблице отношений и некоторым количеством уникальных отличающихся значений (отличающееся значение) в поле в таблице отношений. Обычно, в этих собственных значениях, полученных посредством выборки, существует ошибка и с точки зрения времени существует гистерезис. Поэтому план исполнения SQL, определенный сервером на основе вышеприведенной статистической информации, в общем не является оптимальным планом исполнения SQL.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0005] Варианты осуществления настоящего изобретения обеспечивают способ и устройство для определения плана исполнения SQL для того, чтобы оптимизировать определение плана исполнения SQL и улучшить эффективность исполнения плана исполнения SQL.

[0006] Для достижения вышеприведенной цели в вариантах осуществления настоящего изобретения используются следующие технические решения:

[0007] Первый аспект вариантов осуществления настоящего изобретения обеспечивает способ для определения плана исполнения языка структурированных запросов, SQL, при этом план исполнения SQL соответствует по меньшей мере одной таблице отношений, и во время N-ой итерации способ включает в себя: получение первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-ой итерации, при этом N является натуральным числом, большим, чем 1; установление второго дерева плана согласно упомянутому первому итерационному параметру; и определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение.

[0008] Со ссылкой на первый аспект, в первом возможном способе реализации первого аспекта пороговое значение равно 0, и соответственно, определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение, включает в себя: определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда упомянутое второе дерево плана является таким же, как упомянутое первое дерево плана.

[0009] Положительный эффект, полученный посредством реализации вариантов осуществления настоящего изобретения заключается в том, что в вариантах осуществления настоящего изобретения оптимизированный план исполнения SQL получается посредством исполнения итерации. Во время каждого процесса итерации дерево плана (упоминаемое как первое дерево плана в единой методике в вариантах осуществления настоящего изобретения), установленное во время предыдущего процесса итерации, должно сравниваться с деревом плана (упоминаемым как второе дерево плана в единой методике в вариантах осуществления настоящего изобретения), установленным во время текущего процесса итерации. В дополнение, второе дерево плана устанавливается согласно итерационному параметру (упоминаемому как первый итерационный параметр в единой методике в вариантах осуществления настоящего изобретения), обновленному во время предыдущего процесса итерации, то есть, второе дерево плана, установленное во время каждого процесса итерации, устанавливается на основе первого итерационного параметра, обновленного посредством исполнения первого дерева плана. Поэтому, после того, как итерации выполняются несколько раз, полученное в конечном счете дерево плана не зависит от уже собранного в базе данных итерационного параметра оценки, но дерево плана устанавливается согласно итерационному параметру, записываемому каждый раз, когда дерево плана фактически исполняется во время процесса итерации для того, чтобы получать относительно точный план исполнения SQL для инструкции SQL и улучшать эффективность исполнения плана исполнения SQL.

[0010] Со ссылкой на первый аспект или первый возможный способ реализации первого аспекта, во втором возможном способе реализации первого аспекта первый итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0011] Со ссылкой на первый аспект или с первого по второй возможные способы реализации первого аспекта, в третьем возможном способе реализации первого аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, первый итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0012] Со ссылкой на первый аспект или с первого по третий возможные способы реализации первого аспекта, в четвертом возможном способе реализации первого аспекта после определения первого дерева плана или второго дерева плана в качестве плана исполнения SQL, способ дополнительно включает в себя: запись состояния плана исполнения SQL в качестве определенного состояния.

[0013] Со ссылкой на первый аспект или какой-либо с первого по четвертый возможные способы реализации первого аспекта, в пятом возможном способе реализации первого аспекта после установления второго дерева плана согласно первому итерационному параметру способ дополнительно включает в себя: исполнение второго дерева плана; и запись второго итерационного параметра, сформированного, когда исполняется второе дерево плана.

[0014] Положительный эффект, полученный посредством реализации вариантов осуществления настоящего изобретения заключается в том, что, поскольку обновленный первый итерационный параметр получается, когда второе дерево плана фактически исполняется, второе дерево плана, установленное посредством использования обновленного первого итерационного параметра, является более точным.

[0015] Со ссылкой на шестой возможный способ реализации первого аспекта, в шестом возможном способе реализации первого аспекта второй итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0016] Со ссылкой на пятую или шестой возможный способ реализации первого аспекта, в седьмом возможном способе реализации первого аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, второй итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0017] Со ссылкой на какой-либо с пятого по седьмой возможные способы реализации первого аспекта, в восьмом возможном способе реализации первого аспекта способ дополнительно включает в себя: когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение, обновление упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру; и использование упомянутого второго дерева плана во время N-ой итерации в качестве первого дерева плана во время (N+1)-ой итерации.

[0018] Со ссылкой на восьмой возможный способ реализации первого аспекта, в девятом возможном способе реализации первого аспекта до обновления первого итерационного параметра согласно второму итерационному параметру способ дополнительно включает в себя: когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установление второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.

[0019] Со ссылкой на девятый возможный способ реализации первого аспекта, в десятом возможном способе реализации первого аспекта после установления второго дерева плана, отличного от первого дерева плана, согласно первому итерационному параметру способ дополнительно включает в себя: запись времени исполнения для исполнения упомянутого второго дерева плана; и, когда N больше, чем второе пороговое значение, использование упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0020] Со ссылкой на десятый возможный способ реализации первого аспекта, в одиннадцатом возможном способе реализации первого аспекта после использования второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL способ дополнительно включает в себя: запись состояния плана исполнения SQL в качестве определенного состояния.

[0021] Со ссылкой на восьмой возможный способ реализации первого аспекта, в двенадцатом возможном способе реализации первого аспекта до обновления первого итерационного параметра согласно второму итерационному параметру способ дополнительно включает в себя: запись времени исполнения для исполнения упомянутого второго дерева плана; и, когда N больше, чем третье пороговое значение, использование упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0022] Со ссылкой на двенадцатый возможный способ реализации первого аспекта, в тринадцатом возможном способе реализации первого аспекта после использования второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL способ дополнительно включает в себя: запись состояния плана исполнения SQL в качестве определенного состояния.

[0023] Положительный эффект, полученный посредством реализации вариантов осуществления настоящего изобретения, заключается в том, что для планов исполнения SQL, в отношении которых во время процессов итерации уже выполнено изменение, дерево плана, которое является таким же, как дерево плана, полученное во время предыдущей итерации, никогда не может быть получено посредством итерации. Поэтому, чтобы избежать бесконечного цикла может быть учтено, что, когда количество N итераций больше, чем пороговое значение во время пройденных N процессов итераций, второе дерево плана с кратчайшим временем исполнения является оптимальным деревом плана, и тогда второе дерево плана используется в качестве плана исполнения SQL.

[0024] Со ссылкой на какой-либо с седьмого по тринадцатый возможные способы реализации первого аспекта, в четырнадцатом возможном способе реализации первого аспекта обновление первого итерационного параметра согласно второму итерационному параметру включает в себя: получение набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра, и использование результата набора объединения в качестве упомянутого первого итерационного параметра.

[0025] Со ссылкой на первый аспект или какой-либо со второго по четырнадцатый возможные способы реализации первого аспекта, в пятнадцатом возможном способе реализации первого аспекта способ дополнительно включает в себя: когда выполняется изначальная итерация, установление изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки; исполнение изначального дерева плана для получения изначального итерационного параметра; и обновление итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра.

[0026] Со ссылкой на пятнадцатый возможный способ реализации первого аспекта, в шестнадцатом возможном способе реализации первого аспекта итерационный параметр оценки включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0027] Со ссылкой на пятнадцатую или шестнадцатый возможный способ реализации первого аспекта, в семнадцатом возможном способе реализации первого аспекта изначальный итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0028] Со ссылкой на какой-либо с пятнадцатого по семнадцатый возможные способы реализации первого аспекта, в восемнадцатом возможном способе реализации первого аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, изначальный итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0029] Со ссылкой на какой-либо с пятнадцатого по восемнадцатый возможные способы реализации первого аспекта, в девятнадцатом возможном способе реализации первого аспекта обновление итерационного параметра оценки согласно изначальному итерационному параметру для получения первого итерационного параметра включает в себя: получение набора объединения из изначального итерационного параметра и итерационного параметра оценки, и использование результата набора объединения в качестве упомянутого первого итерационного параметра.

[0030] Со ссылкой на какой-либо с пятнадцатого по девятнадцатый возможные способы реализации первого аспекта, в двадцатом возможном способе реализации первого аспекта до того, как выполняется изначальная итерация способ дополнительно включает в себя: запрашивание, является ли состояние плана исполнения SQL определенным состоянием; и, когда состояние плана исполнения SQL является определенным состоянием, исполнение плана исполнения SQL.

[0031] Положительный эффект, полученный посредством реализации вариантов осуществления настоящего изобретения, заключается в том, что при необходимости в повторном исполнении после того, как оптимизированный план исполнения SQL уже сохранен на сервере, план исполнения SQL не должен быть определен повторно, за счет чего улучшается эффективность исполнения сервера.

[0032] Со ссылкой на первый аспект или какой-либо со второго по двадцатый возможные способы реализации первого аспекта, в двадцать первом возможном способе реализации первого аспекта план исполнения SQL дополнительно включает в себя критерий фильтрации; и, когда план исполнения SQL дополнительно включает в себя критерий фильтрации, первый итерационный параметр включает в себя кортежи отношений, которые соответствуют условию фильтрации, в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0033] Со ссылкой на первый аспект или какой-либо со второго по двадцать первый возможные способы реализации первого аспекта, в двадцать втором возможном способе реализации первого аспекта первый итерационный параметр дополнительно включает в себя некоторое количество уникальных отличающихся значений в поле в какой-либо таблице отношений, соответствующей плану исполнения SQL, и/или набор (MCV) из столбца, чье количество вхождений в таблице отношений превышает второе пороговое значение.

[0034] Положительный эффект, полученный посредством реализации вариантов осуществления настоящего изобретения, заключается в том, что второе дерево плана, полученное в вариантах осуществления настоящего изобретения, не зависит от уже собранного в базе данных итерационного параметра оценки, но устанавливается согласно первому итерационному параметру, обновленному во время процесса итерации; дополнительно, когда второе дерево плана является таким же, как первое дерево плана, второе дерево плана используется в качестве плана исполнения SQL, так чтобы мог быть определен относительно точный план исполнения SQL, за счет чего улучшается эффективность исполнения плана исполнения SQL.

[0035] Второй аспект вариантов осуществления настоящего изобретения обеспечивает устройство для определения плана исполнения языка структурированных запросов, SQL, при этом план исполнения SQL соответствует по меньшей мере одной таблице отношений, причем устройство включает в себя память и процессор, подсоединенный к памяти, и во время N-ой итерации включает в себя: процессор, выполненный с возможностью: получения первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-ой итерации, при этом N является натуральным числом, большим, чем 1; установления второго дерева плана согласно упомянутому первому итерационному параметру; и определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение.

[0036] Со ссылкой на второй аспект, в первом возможном способе реализации второго аспекта, первое пороговое значение равно 0, и соответственно, процессор выполнен с возможностью определения первого дерева плана или второго дерева плана в качестве плана исполнения SQL, когда второе дерево плана является таким же, как первое дерево плана.

[0037] Со ссылкой на второй аспект или первый возможный способ реализации второго аспекта, во втором возможном способе реализации второго аспекта первый итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0038] Со ссылкой на второй аспект или с первого по второй возможные способы реализации второго аспекта, в третьем возможном способе реализации второго аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, первый итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0039] Со ссылкой на второй аспект или с первого по третий возможные способы реализации второго аспекта, в четвертом возможном способе реализации второго аспекта после определения первого дерева плана или второго дерева плана в качестве плана исполнения SQL, процессор дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0040] Со ссылкой на второй аспект или какой-либо с первого по четвертый возможные способы реализации второго аспекта, в пятом возможном способе реализации второго аспекта после установления второго дерева плана согласно первому итерационному параметру процессор дополнительно выполнен с возможностью: исполнения второго дерева плана; и записи второго итерационного параметра, сформированного, когда исполняется второе дерево плана.

[0041] Со ссылкой на шестой возможный способ реализации второго аспекта, в шестом возможном способе реализации второго аспекта второй итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0042] Со ссылкой на пятую или шестой возможный способ реализации второго аспекта, в седьмом возможном способе реализации второго аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, второй итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0043] Со ссылкой на какой-либо с пятого по седьмой возможные способы реализации второго аспекта, в восьмом возможном способе реализации второго аспекта процессор дополнительно выполнен с возможностью: когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение, обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру; и использования упомянутого второго дерева плана во время N-ой итерации в качестве первого дерева плана во время (N+1)-ой итерации.

[0044] Со ссылкой на восьмой возможный способ реализации второго аспекта, в девятом возможном способе реализации второго аспекта до обновления первого итерационного параметра согласно второму итерационному параметру процессор дополнительно выполнен с возможностью: когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установления второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.

[0045] Со ссылкой на девятый возможный способ реализации второго аспекта, в десятом возможном способе реализации второго аспекта после установления второго дерева плана, отличного от первого дерева плана, согласно первому итерационному параметру процессор дополнительно выполнен с возможностью: записи времени исполнения для исполнения упомянутого второго дерева плана; и, когда N больше, чем второе пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0046] Со ссылкой на десятый возможный способ реализации второго аспекта, в одиннадцатом возможном способе реализации второго аспекта после использования второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL процессор дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0047] Со ссылкой на восьмой возможный способ реализации второго аспекта, в двенадцатом возможном способе реализации второго аспекта до обновления первого итерационного параметра согласно второму итерационному параметру процессор дополнительно выполнен с возможностью: записи времени исполнения для исполнения упомянутого второго дерева плана; и, когда N больше, чем третье пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0048] Со ссылкой на двенадцатый возможный способ реализации второго аспекта, в тринадцатом возможном способе реализации второго аспекта после использования второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL процессор дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0049] Со ссылкой на какой-либо с седьмого по тринадцатый возможные способы реализации второго аспекта, в четырнадцатом возможном способе реализации второго аспекта процессор в частности выполнен с возможностью: получения набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра, и использования результата набора объединения в качестве упомянутого первого итерационного параметра.

[0050] Со ссылкой на второй аспект или какой-либо со второго по четырнадцатый возможные способы реализации второго аспекта, в пятнадцатом возможном способе реализации второго аспекта процессор дополнительно выполнен с возможностью: когда выполняется изначальная итерация, установления изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки; исполнения изначального дерева плана для получения изначального итерационного параметра; и обновления итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра.

[0051] Со ссылкой на пятнадцатый возможный способ реализации второго аспекта, в шестнадцатом возможном способе реализации второго аспекта итерационный параметр оценки включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0052] Со ссылкой на пятнадцатую или шестнадцатый возможный способ реализации второго аспекта, в семнадцатом возможном способе реализации второго аспекта изначальный итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0053] Со ссылкой на какой-либо с пятнадцатого по семнадцатый возможные способы реализации второго аспекта, в восемнадцатом возможном способе реализации второго аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, изначальный итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0054] Со ссылкой на какой-либо с пятнадцатого по восемнадцатый возможные способы реализации второго аспекта, в девятнадцатом возможном способе реализации второго аспекта процессор в частности выполнен с возможностью: получения набора объединения из изначального итерационного параметра и итерационного параметра оценки, и использования результата набора объединения в качестве упомянутого первого итерационного параметра.

[0055] Со ссылкой на какой-либо с пятнадцатого по девятнадцатый возможные способы реализации второго аспекта, в двадцатом возможном способе реализации второго аспекта до того, как выполняется изначальная итерация процессор дополнительно выполнен с возможностью: запрашивания, является ли состояние плана исполнения SQL определенным состоянием; и, когда состояние плана исполнения SQL является определенным состоянием, исполнения плана исполнения SQL.

[0056] Со ссылкой на второй аспект или какой-либо со второго по двадцатый возможные способы реализации второго аспекта, в двадцать первом возможном способе реализации второго аспекта план исполнения SQL дополнительно включает в себя критерий фильтрации; и, когда план исполнения SQL дополнительно включает в себя критерий фильтрации, первый итерационный параметр включает в себя кортежи отношений, которые соответствуют условию фильтрации, в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0057] Со ссылкой на второй аспект или какой-либо со второго по двадцать первый возможные способы реализации второго аспекта, в двадцать втором возможном способе реализации второго аспекта первый итерационный параметр дополнительно включает в себя некоторое количество уникальных отличающихся значений в поле в какой-либо таблице отношений, соответствующей плану исполнения SQL, и/или набор (MCV) из столбца, чье количество вхождений в таблице отношений превышает второе пороговое значение.

[0058] Третий аспект вариантов осуществления настоящего изобретения обеспечивает устройство для определения плана исполнения языка структурированных запросов, SQL, план исполнения SQL соответствует по меньшей мере одной таблице отношений, упомянутое устройство включает в себя блок получения, блок установления и блок определения, и во время N-ой итерации включает в себя: блок получения, выполненный с возможностью получения первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-ой итерации, при этом N является натуральным числом, большим, чем 1; блок установления, выполненный с возможностью установления второго дерева плана согласно упомянутому первому итерационному параметру; и блок определения, выполненный с возможностью определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение.

[0059] Со ссылкой на третий аспект, в первом возможном способе реализации третьего аспекта, первое пороговое значение равно 0, и соответственно, блок определения в частности выполнен с возможностью определения первого дерева плана или второго дерева плана в качестве плана исполнения SQL, когда второе дерево плана является таким же, как первое дерево плана.

[0060] Со ссылкой на третий аспект или первый возможный способ реализации третьего аспекта, во втором возможном способе реализации третьего аспекта первый итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0061] Со ссылкой на третий аспект или с первого по второй возможные способы реализации третьего аспекта, в третьем возможном способе реализации третьего аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, первый итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0062] Со ссылкой на третий аспект или с первого по третий возможные способы реализации третьего аспекта, в четвертом возможном способе реализации третьего аспекта после определения первого дерева плана или второго дерева плана в качестве плана исполнения SQL, устройство дополнительно включает в себя блок записи, выполненный с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0063] Со ссылкой на третий аспект или какой-либо с первого по четвертый возможные способы реализации третьего аспекта, в пятом возможном способе реализации третьего аспекта после установления второго дерева плана согласно первому итерационному параметру устройство дополнительно включает в себя блок исполнения, выполненный с возможностью исполнения второго дерева плана; и блок записи, выполненный с возможностью записи второго итерационного параметра, сформированного, когда исполняется второе дерево плана.

[0064] Со ссылкой на шестой возможный способ реализации третьего аспекта, в шестом возможном способе реализации третьего аспекта второй итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0065] Со ссылкой на пятую или шестой возможный способ реализации третьего аспекта, в седьмом возможном способе реализации третьего аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, второй итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0066] Со ссылкой на какой-либо с пятого по седьмой возможные способы реализации третьего аспекта, в восьмом возможном способе реализации третьего аспекта устройство дополнительно включает в себя блок обновления, выполненный с возможностью: когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение, обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру; и использования упомянутого второго дерева плана во время N-ой итерации в качестве первого дерева плана во время (N+1)-ой итерации.

[0067] Со ссылкой на восьмой возможный способ реализации третьего аспекта, в девятом возможном способе реализации третьего аспекта до того, как первый итерационный параметр обновляется согласно второму итерационному параметру блок установления дополнительно выполнен с возможностью: когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установления второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.

[0068] Со ссылкой на девятый возможный способ реализации третьего аспекта, в десятом возможном способе реализации третьего аспекта после того, как второе дерево плана, отличное от первого дерева плана, устанавливается согласно первому итерационному параметру блок записи дополнительно выполнен с возможностью записи времени исполнения для исполнения упомянутого второго дерева плана; и блок определения дополнительно выполнен с возможностью: когда N больше, чем второе пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0069] Со ссылкой на десятый возможный способ реализации третьего аспекта, в одиннадцатом возможном способе реализации третьего аспекта после того, как второе дерево плана с кратчайшим временем исполнения во время всех N итераций используется в качестве плана исполнения SQL, блок записи дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0070] Со ссылкой на восьмой возможный способ реализации третьего аспекта, в двенадцатом возможном способе реализации третьего аспекта до того, как первый итерационный параметр обновляется согласно второму итерационному параметру, блок записи дополнительно выполнен с возможностью: записи времени исполнения для исполнения упомянутого второго дерева плана; и блок определения дополнительно выполнен с возможностью: когда N больше, чем третье пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0071] Со ссылкой на двенадцатый возможный способ реализации третьего аспекта, в тринадцатом возможном способе реализации третьего аспекта после того, как второе дерево плана с кратчайшим временем исполнения во время всех N итераций используется в качестве плана исполнения SQL, блок записи дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0072] Со ссылкой на какой-либо с седьмого по тринадцатый возможные способы реализации третьего аспекта, в четырнадцатом возможном способе реализации третьего аспекта блок обновления в частности выполнен с возможностью: получения набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра, и использования результата набора объединения в качестве упомянутого первого итерационного параметра.

[0073] Со ссылкой на третий аспект или какой-либо со второго по четырнадцатый возможные способы реализации третьего аспекта, в пятнадцатом возможном способе реализации третьего аспекта блок установления дополнительно выполнен с возможностью: когда выполняется изначальная итерация, установления изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки; блок исполнения дополнительно выполнен с возможностью исполнения изначального дерева плана для получения изначального итерационного параметра; и блок обновления дополнительно выполнен с возможностью обновления итерационного параметра оценки согласно изначальному итерационному параметру для получения упомянутого первого итерационного параметра.

[0074] Со ссылкой на пятнадцатый возможный способ реализации третьего аспекта, в шестнадцатом возможном способе реализации третьего аспекта итерационный параметр оценки включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0075] Со ссылкой на пятнадцатую или шестнадцатый возможный способ реализации третьего аспекта, в семнадцатом возможном способе реализации третьего аспекта изначальный итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0076] Со ссылкой на какой-либо с пятнадцатого по семнадцатый возможные способы реализации третьего аспекта, в восемнадцатом возможном способе реализации третьего аспекта, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, изначальный итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0077] Со ссылкой на какой-либо с пятнадцатого по восемнадцатый возможные способы реализации третьего аспекта, в девятнадцатом возможном способе реализации третьего аспекта блок обновления в частности выполнен с возможностью: получения набора объединения из изначального итерационного параметра и итерационного параметра оценки, и использования результата набора объединения в качестве упомянутого первого итерационного параметра.

[0078] Со ссылкой на какой-либо с пятнадцатого по девятнадцатый возможные способы реализации третьего аспекта, в двадцатом возможном способе реализации третьего аспекта до того, как выполняется изначальная итерация устройство дополнительно включает в себя блок запрашивания, выполненный с возможностью запрашивания, является ли состояние плана исполнения SQL определенным состоянием; и блок определения дополнительно выполнен с возможностью: когда состояние плана исполнения SQL является определенным состоянием, исполнения плана исполнения SQL.

[0079] Со ссылкой на третий аспект или какой-либо со второго по двадцатый возможный способ реализации третьего аспекта, в двадцать первом возможном способе реализации третьего аспекта план исполнения SQL дополнительно включает в себя критерий фильтрации; и, когда план исполнения SQL дополнительно включает в себя критерий фильтрации, первый итерационный параметр включает в себя кортежи отношений, которые соответствуют условию фильтрации, в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0080] Со ссылкой на третий аспект или какой-либо со второго по двадцать первый возможные способы реализации третьего аспекта, в двадцать втором возможном способе реализации третьего аспекта первый итерационный параметр дополнительно включает в себя некоторое количество уникальных отличающихся значений в поле в какой-либо таблице отношений, соответствующей плану исполнения SQL, и/или набор (MCV) из столбца, чье количество вхождений в таблице отношений превышает второе пороговое значение.

[0081] Согласно четвертому аспекту, обеспечивается устройство для определения плана исполнения языка структурированных запросов (SQL), включающее в себя процессор, память, шину и интерфейс связи, при этом память выполнена с возможностью хранения исполняемой компьютером инструкции; процессор соединен с памятью посредством использования шины; и, когда устройство определения работает, процессор исполняет исполняемую компьютером инструкцию, сохраненную в памяти, так что устройство определения выполняет способ для определения плана исполнения SQL согласно первому аспекту или какой-либо с первого по двадцать второй возможные способы реализации первого аспекта в вариантах осуществления настоящего изобретения.

[0082] Согласно пятому аспекту обеспечивается компьютерный носитель данных, выполненный с возможностью хранения компьютерной программной инструкции, используемой устройством для определения плана исполнения SQL согласно четвертому аспекту, и компьютерный носитель данных включает в себя программу, разработанную для исполнения устройства для определения плана исполнения SQL в четвертом аспекте.

[0083] В настоящем изобретении название устройства для определения плана исполнения SQL не накладывает ограничение на устройство. В фактической реализации устройство может появляться с другим названием. Если функции устройства являются аналогичными функциям устройства в настоящем изобретении, устройство должно попадать в объем формулы изобретения настоящего изобретения и технологий, эквивалентных настоящему изобретению.

[0084] В дополнение, для технического эффекта, вызываемого какого-либо одного из способов реализации со второго по пятый аспект, ссылаться на технические эффекты, вызываемые различными возможными способами реализации в первом аспекте. Подробности не описываются повторно в этом документе.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0085] Чтобы более четко описать технические решения в вариантах осуществления настоящего изобретения или в предшествующем уровне техники, нижеследующее кратко описывает сопроводительные чертежи, необходимые для описания вариантов осуществления или предшествующего уровня техники.

[0086] Фиг. 1 представляет собой схематическую блок-схему последовательности операций способа для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0087] Фиг. 2A и Фиг. 2B представляют собой схематическую блок-схему последовательности операций другого способа для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0088] Фиг. 3A и Фиг. 3B представляют собой схематическую блок-схему последовательности операций другого способа для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0089] Фиг. 4 представляет собой схематическое структурное представление устройства для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0090] Фиг. 5 представляет собой схематическое структурное представление другого устройства для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0091] Фиг. 6 представляет собой схематическое структурное представление другого устройства для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения;

[0092] Фиг. 7 представляет собой схематическое структурное представление другого устройства для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения; и

[0093] Фиг. 8 представляет собой схематическое структурное представление компьютерного устройства согласно варианту осуществления настоящего изобретения.

ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

[0094] Нижеследующее четко и полностью описывает технические решения в вариантах осуществления настоящего изобретения со ссылкой на сопроводительные чертежи в вариантах осуществления настоящего изобретения. Ясно, что описанные варианты осуществления представляют собой лишь некоторые, но не все варианты осуществления настоящего изобретения.

[0095] В дополнение, термины "первый" и "второй" предназначены лишь для описания, и не должны быть поняты как указание или привлечение относительной важности, или явное указание количества указанных технических признаков. Поэтому признак, ограниченный "первым" или "вторым" может явно или неявно включать в себя один или более признаков. В описании настоящего изобретения "несколько" означает два или больше, чем два, пока не определено иначе.

[0096] Способ для определения плана исполнения SQL, который обеспечивается в вариантах осуществления настоящего изобретения, может быть в частности применен на стадии для определения плана исполнения SQL. Основной принцип решения заключается в следующем: использование способа итераций для установления дерева плана на основе итерационного параметра, формируемого каждый раз, когда фактически исполняется дерево плана, для того, чтобы получать оптимальный план исполнения SQL.

[0097] В частности, в предшествующем уровне техники сервер принимает инструкцию SQL. В общем, когда определяется план исполнения SQL, дерево плана непосредственно устанавливается согласно итерационному параметру оценки (то есть, собственному значению, полученному посредством использования выборочного способа или способа итераций), который предварительно сохраняется в базе данных сервера, и дерево плана используется в качестве плана исполнения SQL. Однако, поскольку итерационный параметр оценки может быть неточным, определенный план исполнения SQL может быть неточным.

[0098] Поэтому, в способе для определения плана исполнения SQL, который обеспечивается в вариантах осуществления настоящего изобретения, дерево плана может быть циклически установлено и исполнено посредством использования способа итераций, и итерационные параметры, сформированные во время фактических процессов исполнения дерева плана записываются для того, чтобы обновлять собственное значение, полученное посредством использования выборочного способа или способа оценки в предыдущем процессе итерации. Дополнительно, в следующем процессе итерации дерево плана повторно устанавливается посредством использования обновленного итерационного параметра, пока деревья плана, установленные в двух соседних процессах итераций не будут одними и теми же, и дерево плана используется в качестве плана исполнения SQL.

[0100] Во время каждого процесса итерации дерево плана (упоминаемое как первое дерево плана в единой методике в вариантах осуществления настоящего изобретения), установленное во время предыдущего процесса итерации, должно сравниваться с деревом плана (упоминаемым как второе дерево плана в единой методике в вариантах осуществления настоящего изобретения), установленным во время текущего процесса итерации. В дополнение, второе дерево плана устанавливается согласно итерационному параметру (упоминаемому как первый итерационный параметр в единой методике в вариантах осуществления настоящего изобретения), обновленному во время предыдущего процесса итерации, то есть, второе дерево плана, установленное во время каждого процесса итерации, устанавливается на основе первого итерационного параметра, обновленного посредством исполнения первого дерева плана. Поэтому, после того, как итерации выполняются несколько раз, полученное в конечном счете дерево плана не зависит от уже собранного в базе данных итерационного параметра оценки, но дерево плана устанавливается согласно итерационному параметру, записываемому каждый раз, когда дерево плана фактически исполняется во время процесса итерации для того, чтобы получать относительно точный план исполнения SQL и улучшать эффективность исполнения плана исполнения SQL.

[0101] Чтобы подробно описать способ для определения плана исполнения SQL, который обеспечивается в вариантах осуществления настоящего изобретения, нижеследующее объясняет некоторые профессиональные термины, которые могут быть вовлечены в варианты осуществления настоящего изобретения.

[0102] Сначала, для ясного описания процесса итерации, вовлеченного в варианты осуществления настоящего изобретения, предположим, что предыдущая итерация является (N-1)-ой итерацией, и текущая итерация является N-ой итерацией. Тогда, дерево плана, установленное во время (N-1)-ой итерации является первым деревом плана, и дерево плана, установленное во время N-ой итерации является вторым деревом плана, при этом N является натуральным числом, большим, чем 1.

[0103] План исполнения SQL соответствует по меньшей мере одной таблице отношений в базе данных. Предполагается, что план исполнения SQL соответствует M таблицам отношений, при этом M является натуральным числом, большим, чем 1.

[0104] Предполагается, что первый итерационный параметр может в частности включать в себя первое собственное значение и/или второе собственное значение, то есть, по меньшей мере одно из первого собственного значения или второго собственного значения. Первое собственное значение используется для указания кортежей отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL; и второе собственное значение используется для указания, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, кортежей отношений в результирующем наборе, который получается посредством выполнения операции соединения в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений. В вариантах осуществления настоящего изобретения первое собственное значение представлено посредством N(i), и второе собственное значение представлено посредством N(i, j,k). N(i) является кортежем отношений iой таблицы отношений, и N(i, j,k) является кортежем отношений результирующего набора, полученного после того, как операция соединения (то есть, соединение) выполняется в последовательности из iой таблицы отношений, jой таблицы отношений и kой таблицы отношений.

[0105] Дополнительно, исполнение плана исполнения SQL сервером может дополнительно включать в себя определение критерия фильтрации плана исполнения SQL. Например, критерий фильтрации заключается в том, чтобы сосчитать всех мальчиков, имеющих рост, выше, чем 180 сантиметров. В этом случае, первое собственное значение может быть дополнительно использовано для указания кортежа отношений, который удовлетворяет критерий фильтрации в iой таблице отношений.

[0106] Аналогичным образом, второй итерационный параметр, вовлеченный в варианты осуществления настоящего изобретения, также определенно включает в себя первое собственное значение и/или второе собственное значение. Различие заключается в том, что первый итерационный параметр относится к итерационному параметру, обновленному во время (N-1)-ой итерации, и второй итерационный параметр относится к итерационному параметру, сформированному, когда второе дерево плана исполняется во время N-ой итерации. Методика обновления первого итерационного параметра описывается подробно в вариантах осуществления настоящего изобретения.

[0107] Дополнительно, собственное значение может дополнительно включать в себя некоторое количество уникальных отличающихся значений (то есть, отличающихся значений) в поле в таблице отношений и/или набор (то есть, наиболее общее значение, MCV) из столбца, чье количество вхождений в таблице отношений превышает второе пороговое значение.

[0108] В вариантах осуществления настоящего изобретения изменение может быть представлено изменением. В частности, если второе дерево плана, установленное во время N-ой итерации, отличается от первого дерева плана, установленного во время (N-1)-ой итерации, но второй итерационный параметр, сформированный, когда исполняется второе дерево плана, является таким же, как первый итерационный параметр, сформированный, когда исполняется первое дерево плана, следует учитывать, что изменение должно быть выполнено в отношении текущего плана исполнения SQL, для того, чтобы мог быть дополнительно получен наиболее лучший план исполнения SQL.

[0109] Как показано на Фиг. 1, вариант осуществления настоящего изобретения обеспечивает способ для определения плана исполнения SQL. Поскольку во время процесса итерации со второго по последний процессы итерации являются одними и теми же, Nый процесс итерации используется в этом документе в качестве примера в целях иллюстрации. Способ включает в себя следующие этапы.

[0110] 101. Получение первого итерационного параметра, сформированного, когда исполняется первое дерево плана.

[0111] Поскольку и дерево плана, установленное во время процесса итерации, и первый итерационный параметр, сформированный в конце процесса итерации, могут быть сохранены, во время Nго процесса итерации могут быть получены первое дерево плана, установленное во время (N-1)-ой итерации, и вышеприведенный первый итерационный параметр.

[0112] 102. Установление второго дерева плана согласно упомянутому первому итерационному параметру.

[0113] Например, когда N=2, второе дерево плана может быть установлено согласно первому итерационному параметру, полученному, когда завершается первая итерация.

[0114] 103. Исполнение второго дерева плана и запись второго итерационного параметра, сформированного, когда исполняется второе дерево плана.

[0115] В частности, на этапе 103 исполняется второе дерево плана, установленное на этапе 102, и записывается второй итерационный параметр, сформированный, когда исполняется второе дерево плана.

[0116] Аналогичным образом, второй итерационный параметр также включает в себя N(i) и/или N(i, j, k).

[0117] 104. Сравнение второго дерева плана, установленного во время N-ой итерации, с первым деревом плана, установленным во время (N-1)-ой итерации, для того, чтобы определять, является ли второе дерево плана таким же, как первое дерево плана.

[0118] Следует отметить, что, когда N=2, вышеприведенная (N-1)я итерация является изначальным деревом плана, установленным во время первой итерации.

[0119] Следует понимать, что например, на этапе 104 второе дерево плана, установленное во время N-ой итерации, сравнивается с первым деревом плана, установленным во время (N-1)-ой итерации, для того, чтобы определять, является ли второе дерево плана таким же, как первое дерево плана. В некоторых вариантах осуществления этап 104 дополнительно включает в себя: сравнение второго дерева плана, установленного во время N-ой итерации и первого дерева плана, установленного во время (N-1)-ой итерации с пороговым значением, для того, чтобы определять, не является ли различие между вторым деревом плана и первым деревом плана большим, чем пороговое значение. Пороговое значение может быть фиксированным значением, которое предустановлено или получено посредством обучения, или может быть динамическим значением, которое непрерывно обновляется в системе. Это не ограничивается. Например, сравнение этапов для исполнения второго дерева плана с этапами для исполнения первого дерева плана для того, чтобы определять, не является ли количество различных этапов большим, чем единица, или сравнение этапов для исполнения второго дерева плана с этапами для исполнения первого дерева плана для того, чтобы определять, не является ли процентное отношение различных этапов большим, чем 99%. Это не ограничивается. В последующих этапах любое описание, которое относится к сравнению первого дерева плана и второго дерева плана для определения, является ли первое дерево плана таким же, как или аналогичным второму дереву плана, имеет то же самое значение как описание этапа 104, и подробности в этом документе повторно не описываются. В общем, когда пороговое значение не является 0, полученный план исполнения SQL является субоптимальным планом исполнения. Однако следует понимать, что больше ресурсов и времени операции сохраняются в процессе определения субоптимального плана исполнения по сравнению с процессом определения оптимального плана исполнения. В некоторых вариантах осуществления, например, в сценарии применения, в котором требование для времени операции и ресурсов является относительно высоким, используется субоптимальный план исполнения.

[0120] 105. Если второе дерево плана, установленное во время N-ой итерации отличается от первого дерева плана, установленного во время (N-1)-ой итерации, обновление первого итерационного параметра посредством использования второго итерационного параметра.

[0121] В частности, первое собственное значение и/или второе собственное значение, которые являются/является отличным от первого итерационного параметра и которые находятся/находится во втором итерационном параметре могут быть добавлены к первому итерационному параметру, то есть, получается набор объединения из первого итерационного параметра и второго итерационного параметра для получения обновленного первого итерационного параметра так, что во время (N+1)-ой итерации второе дерево плана повторно устанавливается посредством использования обновленного первого итерационного параметра. Поскольку обновленный первый итерационный параметр является первым собственным значением и/или вторым собственным значением, полученным, когда фактически исполняется второе дерево плана, второе дерево плана, установленное посредством использования первого итерационного параметра является более точным.

[0122] 106. Обновление первого дерева плана посредством использования второго дерева плана и увеличение количества итераций на 1.

[0123] В этом случае, второе дерево плана, сформированное во время этого процесса итерации используется в качестве первого дерева плана во время следующего процесса итерации, пока второе дерево плана, установленное во время процесса итерации, не будет таким же, как первое дерево плана, установленное во время предыдущего процесса итерации.

[0124] В дополнение, некоторое количество итераций может быть увеличено на 1 для того, чтобы обеспечивать повторное исполнение этапов 101-106.

[0125] 107. Если второе дерево плана, установленное во время N-ой итерации является таким же, как первое дерево плана, установленное во время (N-1)-ой итерации, использование второго дерева плана в качестве плана исполнения SQL.

[0126] В частности, на этапе 107, когда второе дерево плана, установленное во время N-ой итерации является таким же, как первое дерево плана, установленное во время (N-1)-ой итерации, это указывает, что после некоторого количества N итераций все первые собственные значения и вторые собственные значения включены в первом итерационном параметре. Поэтому, в этом случае, второе дерево плана, установленное согласно первому итерационному параметру, является оптимальным и второе дерево плана может быть использовано в качестве плана исполнения SQL.

[0127] В этом случае, соответствие между вторым деревом плана и связанной инструкцией SQL для исполнения второго дерева плана может быть сохранено. Когда инструкция SQL принимается еще раз, сервер может непосредственно получать второе дерево плана, то есть, план исполнения SQL из соответствующего блока хранения.

[0128] В некоторых вариантах осуществления аналогичный этапу 104 этап 107 дополнительно включает в себя: если второе дерево плана, установленное во время N-ой итерации, и первое дерево плана, установленное во время (N-1)-ой итерации, не являются большими, чем пороговое значение, второе дерево плана или первое дерево плана используется в качестве плана исполнения SQL. Следует понимать, что в этом варианте осуществления и первое дерево плана, и второе дерево плана являются субоптимальными деревьями плана, и или первое дерево плана, или второе дерево плана может быть выбрано в качестве плана исполнения SQL.

[0129] Следует понимать, что в некоторых вариантах осуществления или в некоторых циклах итераций, используемых в качестве примеров в некоторых вариантах осуществления, этап 103, этап 105 и этап 106 являются необязательными этапами.

[0130] В дополнение, необязательно время исполнения второго дерева плана может быть записано в каждом цикле итерации. Когда количество итераций превышает предварительно определенное пороговое значение, то есть, когда алгоритм итерации не сходится в пределах временного порогового значения, вышеприведенное второе дерево плана с кратчайшим временем исполнения во всех циклах итераций выбирается в качестве плана исполнения SQL.

[0131] Необязательно, после того, как второе дерево плана используется в качестве плана исполнения SQL, состояние плана исполнения SQL устанавливается в определенное состояние на сервере, то есть, определяется оптимизированный план исполнения SQL. В последующем этапе, когда состояние плана исполнения SQL является определенным состоянием, процесс, во время которого определяется план исполнения SQL, не должен быть повторен, посредством чего улучшается эффективность исполнения сервера.

[0132] Дополнительно, на основе способа для определения плана исполнения SQL, который показан на Фиг. 1, вариант осуществления настоящего изобретения дополнительно обеспечивает способ для определения плана исполнения SQL. Как показано на Фиг. 2A и Фиг. 2B, способ включает в себя нижеследующие этапы.

[0133] 201. Запрашивание, является ли состояние плана исполнения SQL определенным состоянием.

[0134] В частности, идентификатор таблицы отношений, соответствующей плану исполнения SQL, переносится в инструкции SQL; например, принятая инструкция SQL представляет собой: выбор числа(*) из dba, то есть, поиск таблицы отношений, чей идентификатор является dba для некоторого количества линий таблицы отношений dba.

[0135] Поскольку одна и та же инструкция SQL может быть повторно исполнена сервером за период времени, когда план исполнения SQL, связанный с инструкцией SQL, формируется в первый раз, соответствие между планом исполнения SQL и инструкцией SQL может быть сохранено. Таким образом, когда инструкция SQL принимается еще раз, может быть найдено посредством запрашивания, существует ли план исполнения SQL, соответствующий инструкции SQL, то есть, является ли состояние плана исполнения SQL определенным состоянием.

[0136] Например, изменяемая оптимизация может быть установлена и использована для указания того, сохраняется ли план исполнения SQL, соответствующий принятой инструкции SQL.

[0137] В этом случае, сервер может запрашивать, является ли изменяемая оптимизация, соответствующая инструкции SQL, 1; если Optimization=1, это указывает, что план исполнения SQL, соответствующий принятой инструкции SQL, сохранен, и сервер может непосредственно получать план исполнения SQL из соответствующего блока хранения.

[0138] И наоборот, если Optimization≠1, то есть, состояние плана исполнения SQL является неопределенным состоянием, это указывает, что никакого плана исполнения SQL, соответствующего принятой инструкции SQL, не сохранено, то есть, инструкция SQL исполняется в первый раз, и в этом случае, выполняются следующие этапы 202-213.

[0139] 202. Если план исполнения SQL находится в неопределенном состоянии, инициализация переменной, которая должна быть использована во время последующего процесса итерации.

[0140] На этапе 202, если Optimization≠1, в этом случае может быть инициализирована переменная, которая должна быть использована во время итерации. Например, количество N итераций установлено на 1, оптимизация установлена на 0 и изменение (Variation) установлено на 0.

[0141] 203. Когда выполняется изначальная итерация, установление изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки.

[0142] После того, как завершается операция инициализации на этапе 202, начинается первый процесс итерации. В этом случае, изначальное дерево плана может быть установлено согласно итерационному параметру оценки, сохраненному в статистической информации.

[0143] Поскольку дерево плана не устанавливается во время первой итерации, фактический итерационный параметр не может быть собран из процесса, во время которого исполняется дерево плана. Поэтому в этом случае, сопровождается предшествующий уровень техники, то есть, изначальное дерево плана T0 устанавливается посредством использования итерационного параметра оценки, сохраненного в статистической информации.

[0144] 204. Исполнение изначального дерева плана для получения изначального итерационного параметра, сформированного, когда исполняется изначальное дерево плана, и обновление итерационного параметра оценки посредством использования изначального итерационного параметра.

[0145] Отличие от предшествующего уровня техники заключается в том, что на этапе 204 сервер может исполнять изначальное дерево плана, установленное на этапе 203, и записывается изначальный итерационный параметр, сформированный, когда исполняется изначальное дерево плана, то есть, N(i) и/или N(i, j, k). Таким образом, итерационный параметр оценки на этапе 203 может быть обновлен изначальным итерационным параметром, сформированным, когда исполняется изначальное дерево плана.

[0146] Например, предполагается, что инструкция SQL на этапе 201 переносит идентификаторы двух таблиц отношений, то есть, t1 и t2. На этапе 203 итерационные параметры оценки для установления изначального дерева плана в частности включают в себя N(t1), N(t2) и N(t2, t1). Однако, на этапе 204 изначальные итерационные параметры, сформированные, когда исполняется изначальное дерево плана, могут включать в себя N(t1), N(t2) и N(t1, t2). В этом случае, итерационный параметр, который находится в изначальных итерационных параметрах и который отличается от итерационных параметров оценки, может быть обновлен в итерационные параметры оценки, то есть, обновленные итерационные параметры оценки представляют собой N(t1), N(t2), N(t1, t2), и N(t2, t1), и обновленные итерационные параметры оценки используются в качестве вышеприведенных первых итерационных параметров для того, чтобы устанавливать второе дерево плана во время последующего (N-1)го процесса итерации посредством использования обновленных первых итерационных параметров.

[0147] Дополнительно, для со второго по последние процессы итераций ссылаться на следующие этапы 205-213. В частности, Nй процесс итерации используется в этом документе в качестве примера в целях иллюстрации.

[0148] 205. Во время N-ой итерации получение первого дерева плана, установленного во время (N-1)-ой итерации.

[0149] Поскольку дерево плана, установленное во время каждого процесса итерации, может быть сохранено, во время N-ой итерации может быть получено первое дерево плана, установленное во время (N-1)-ой итерации.

[0150] 206. Определение, должно ли быть выполнено изменение в отношении плана исполнения SQL.

[0151] То есть, определяется, является ли первый итерационный параметр таким же, как второй итерационный параметр. Если первый итерационный параметр является таким же, как второй итерационный параметр, изменение должно быть выполнено в отношении плана исполнения SQL; или, если первый итерационный параметр отличается от второго итерационного параметра, изменение не должно быть выполнено в отношении плана исполнения SQL. Следует понимать, что в этом этапе N>1. N=2 используется в этом документе в качестве примера для описания. После первого процесса итерации на этапах 203 и 204, во время второй итерации сначала может быть определено, должно ли быть выполнено изменение в отношении плана исполнения SQL, то есть, является ли изменение равным 1.

[0152] Если Variation≠1, выполняется этап 207; или, если Variation=1, выполняется этап 208.

[0153] 207. Если изменение не должно быть выполнено в отношении плана исполнения SQL, установление второго дерева плана согласно первому итерационному параметру, обновленному во время (N-1)-ой итерации.

[0154] В частности, если первый итерационный параметр, сформированный, когда исполняется первое дерево плана, отличается от второго итерационного параметра, сформированного, когда исполняется второе дерево плана, первый итерационный параметр обновляется посредством использования второго итерационного параметра. Во втором итерационном параметре первое собственное значение и/или второе собственное значение, которое отличается от первого итерационного параметра, может быть добавлено к первому итерационному параметру, и получается обновленный первый итерационный параметр, то есть, получается набор объединения из первого итерационного параметра и второго итерационного параметра, и результат набора объединения используется в качестве обновленного первого итерационного параметра.

[0155] То есть, если Variation≠1, изменение не должно быть выполнено в отношении плана исполнения SQL, и второе дерево плана устанавливается согласно первому итерационному параметру, обновленному во время (N-1)-ой итерации.

[0156] Например, когда N=2, если Variation≠1, второе дерево плана устанавливается согласно первому итерационному параметру, обновленному во время первой итерации (то есть, первому итерационному параметру, полученному на этапе 204).

[0157] 208. Если изменение должно быть выполнено в отношении плана исполнения SQL, установление второго дерева плана, отличного от вышеприведенного первого дерева плана, согласно первому итерационному параметру, обновленному во время (N-1)-ой итерации.

[0158] В частности, если Variation=1, то есть, изменение должно быть выполнено в отношении плана исполнения SQL, второе дерево плана также может быть установлено согласно первому итерационному параметру, обновленному во время (N-1)-ой итерации. Однако отличие от этапа 207 заключается в том, что установленное второе дерево плана отличается от первого дерева плана, установленного во время (N-1)-ой итерации.

[0159] Например, дерево плана, установленное во время первой итерации, является изначальным деревом плана. Тогда, когда N=3, если Variation=1, второе дерево плана устанавливается посредством использования первого итерационного параметра, обновленного во время второй итерации, и гарантируется, что второе дерево плана отличается от первого дерева плана, установленного во время второй итерации.

[0160] Следует понимать, что сервер может устанавливать второе дерево плана согласно первому итерационному параметру. В этом случае, второе дерево плана учитывается сервером в качестве оптимального дерева плана, которое удовлетворяет требованию первого итерационного параметра, но может не быть фактически оптимальным деревом плана. Когда изменение должно быть выполнено в отношении плана исполнения SQL, серверу может быть запрещено формировать вышеприведенное второе дерево плана (то есть, второе дерево плана, которое является таким же, как первое дерево плана), рассматриваемое сервером как оптимальное дерево плана, но формировать другое второе дерево плана, которое отличается от первого дерева плана.

[0161] 209. Исполнение второго дерева плана и запись второго итерационного параметра, сформированного, когда исполняется второе дерево плана.

[0162] В частности, на этапе 209 исполняется второе дерево плана, установленное на этапе 207 или этапе 208, и записывается второй итерационный параметр, сформированный, когда исполняется второе дерево плана.

[0163] Аналогичным образом, второй итерационный параметр также включает в себя N(i) и/или N(i, j, k).

[0164] 210. Сравнение второго дерева плана, установленного во время N-ой итерации, с первым деревом плана, установленным во время (N-1)-ой итерации, для того, чтобы определять, является ли второе дерево плана таким же, как первое дерево плана.

[0165] Следует отметить, что, когда N=2, первое дерево плана, установленное в вышеприведенной (N-1)-ой итерации, то есть, во время первой итерации, является изначальным деревом плана, установленным на этапе 203.

[0166] 211. Если второе дерево плана, установленное во время N-ой итерации, отличается от первого дерева плана, установленного во время (N-1)-ой итерации, сравнение первого итерационного параметра, сформированного, когда исполняется первое дерево плана, со вторым итерационным параметром, сформированным, когда исполняется второе дерево плана, для того, чтобы определять, является ли первый итерационный параметр таким же, как второй итерационный параметр, то есть, определять, должно ли быть выполнено изменение в отношении плана исполнения SQL; этап 206 выполняется, и этап 212 выполняется только, когда второе дерево плана, установленное во время N-ой итерации, является таким же, как первое дерево плана, установленное во время (N-1)-ой итерации.

[0167] 212. Если второе дерево плана, установленное во время N-ой итерации является таким же, как первое дерево плана, установленное во время (N-1)-ой итерации, использование второго дерева плана в качестве плана исполнения SQL.

[0168] В частности, на этапе 214, когда второе дерево плана, установленное во время N-ой итерации, является таким же, как первое дерево плана, установленное во время (N-1)-ой итерации, это указывает, что после некоторого количества N итераций все первые собственные значения и вторые собственные значения включаются в первый итерационный параметр. Поэтому, в этом случае, второе дерево плана, установленное согласно первому итерационному параметру, является оптимальным и второе дерево плана может быть использовано в качестве плана исполнения SQL.

[0169] В дополнение, соответствие между вторым деревом плана и инструкцией SQL сохраняется и изменяемая оптимизация устанавливается на 1. Таким образом, когда инструкция SQL принимается еще раз, если определяется, что Optimization=1, это указывает, что план исполнения SQL, соответствующий принятой инструкции SQL, сохранен для того, чтобы сервер мог непосредственно получать план исполнения SQL из соответствующего блока хранения.

[0170] В дополнение, на основе этапов 201 и 212, этапы 301-303 могут быть дополнительно добавлены. Например, как показано на Фиг. 3A и Фиг. 3B, этапы 301-303 могут быть следующими.

[0171] 301. Запись времени исполнения для исполнения второго дерева плана во время N-ой итерации.

[0172] 302. Определение, является ли количество N итераций большим, чем пороговое значение, и должно ли быть выполнено изменение в отношении плана исполнения SQL.

[0173] 303. Если количество N итераций больше, чем пороговое значение и изменение должно быть выполнено в отношении плана исполнения SQL, использование второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0174] В частности, на этапе 209, то есть, когда исполняется второе дерево плана, время исполнения, потраченное на исполнение второго дерева плана, может быть записано.

[0175] Дополнительно, после этапа 209 и до этапа 210 выполняется этап 302, то есть, определяются, является ли текущее количество N итераций большим, чем пороговое значение, и, должно ли быть выполнено изменение в отношении плана исполнения SQL.

[0176] В частности, если количество N итераций является большим, чем пороговое значение, и изменение должно быть выполнено в отношении плана исполнения SQL, то есть, N больше, чем пороговое значение и Variation=1, выполняется этап 303; то есть, второе дерево плана с кратчайшим временем исполнения во время N процессов итераций, записанных на этапе 301, используется в качестве плана исполнения SQL на этапе 201.

[0177] Таким образом, для планов исполнения SQL, в отношении которых во время процессов итерации уже выполнено изменение, дерево плана, которое является таким же, как дерево плана, полученное во время предыдущей итерации, никогда не может быть получено посредством итерации. Поэтому, чтобы избежать бесконечного цикла может быть учтено, что, когда количество N итераций больше, чем пороговое значение во время пройденных N процессов итераций, второе дерево плана с кратчайшим временем исполнения является оптимальным деревом плана, и тогда второе дерево плана используется в качестве плана исполнения SQL.

[0178] Соответственно, если определяется на этапе 302, что текущее количество N итераций меньше, чем пороговое значение, и/или изменение не должно быть выполнено в отношении плана исполнения SQL, в этом случае, итерация непрерывно выполняется согласно этапам 210-212, пока количество N итераций не будет больше, чем пороговое значение и изменение не должно быть выполнено в отношении плана исполнения SQL.

[0179] В дополнение, когда время исполнения для исполнения второго дерева плана во время каждой итерации записывается, например, время исполнения для исполнения второго дерева плана во время Nго процесса итерации является T1, в этом случае время исполнения T2 для исполнения второго дерева плана во время (N-1)го процесса итерации может сравниваться с T1. Если T1 меньше, чем T2, относительно короткое время исполнения T1 и второе дерево плана, соответствующее относительно короткому времени исполнения T1, сохраняются. Таким образом, сохраненное второе дерево плана является вторым деревом плана с кратчайшим временем исполнения во время Nых процессов итераций, и время исполнения для исполнения второго дерева плана во время каждой итерации, соответствующее второе дерево плана не должны быть записаны, посредством чего сохраняются ресурсы хранилища.

[0180] Этот вариант осуществления настоящего изобретения обеспечивает способ для определения плана исполнения SQL. Nый процесс итерации используется в качестве примера. Сначала, получается первый итерационный параметр, обновленный во время (N-1)-ой итерации, например, предполагается, что первый итерационный параметр включает в себя первое собственное значение и/или второе собственное значение, при этом первое собственное значение используется для указания кортежа отношений iой таблицы отношений, и второе собственное значение используется для указания кортежа отношений в результирующем наборе, полученном после того, как операция соединения выполняется в отношении по меньшей мере двух таблиц отношений; затем, второе дерево плана устанавливается посредством использования первого итерационного параметра; и, когда второе дерево плана является таким же, как первое дерево плана, второе дерево плана используется в качестве плана исполнения SQL. В конечном счете полученное второе дерево плана в решении не зависит от уже собранного в базе данных итерационного параметра оценки, но устанавливается согласно первому итерационному параметру, обновленному во время процесса итерации; дополнительно, когда второе дерево плана является таким же, как первое дерево плана, второе дерево плана используется в качестве плана исполнения SQL, так чтобы мог быть определен относительно точный план исполнения SQL, за счет чего улучшается эффективность исполнения плана исполнения SQL.

[0181] Фиг. 4 представляет собой схематическое структурное представление устройства для определения плана исполнения SQL согласно варианту осуществления настоящего изобретения. Устройство для определения плана исполнения SQL, которое обеспечено в этом варианте осуществления настоящего изобретения, может быть использовано для реализации способов, которые реализуются в вариантах осуществления настоящего изобретения, показанных на Фиг. 1 по 3B. Для простоты описания, показана только часть, связанная с вариантами осуществления настоящего изобретения. Для подробного технического решения, которое исполняется, ссылаться на варианты осуществления настоящего изобретения, показанные на Фиг. 1 по 3B. Подробности повторно не описаны.

[0182] В частности, как показано на Фиг. 4, устройство для определения плана исполнения SQL включает в себя блок 01 получения, блок 02 установления и блок 03 определения. Устройство применяется в N-ой итерации, при этом:

блок 01 получения выполнен с возможностью получения первого итерационного параметра, сформированного после того, как первое дерево плана исполняется на упомянутой по меньшей мере одной таблице отношений во время (N-1)-ой итерации, при этом N является натуральным числом, большим, чем 1;

блок 02 установления выполнен с возможностью установления второго дерева плана согласно упомянутому первому итерационному параметру; и

блок 03 определения выполнен с возможностью определения упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение.

[0183] Например, упомянутое первое пороговое значение равно 0, и соответственно, определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана не является большим, чем первое пороговое значение, включает в себя: определение упомянутого первого дерева плана или упомянутого второго дерева плана в качестве плана исполнения SQL, когда упомянутое второе дерево плана является таким же, как упомянутое первое дерево плана.

[0184] Например, первый итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0185] Например, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый первый итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0186] Дополнительно, как показано на Фиг. 5, устройство дополнительно включает в себя:

блок 04 исполнения, выполненный с возможностью исполнения второго дерева плана; и

блок 05 записи, выполненный с возможностью записи второго итерационного параметра, сформированного, когда исполняется упомянутое второе дерево плана.

[0187] Например, блок 05 записи дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0188] Например, второй итерационный параметр включает в себя кортежи отношений в какой-либо одной или более таблицах отношений, соответствующих плану исполнения SQL.

[0189] Например, когда план исполнения SQL соответствует по меньшей мере двум таблицам отношений, упомянутый второй итерационный параметр дополнительно включает в себя кортежи отношений в результирующем наборе, который получается после того, как операция соединения выполняется в отношении какой-либо одной или более таблиц отношений в упомянутых по меньшей мере двух таблицах отношений.

[0190] Дополнительно, как показано на Фиг. 6, устройство дополнительно включает в себя:

блок 06 обновления, выполненный с возможностью: когда различие между упомянутым вторым деревом плана и упомянутым первым деревом плана является большим, чем упомянутое первое пороговое значение, обновления упомянутого первого итерационного параметра согласно упомянутому второму итерационному параметру; и использования упомянутого второго дерева плана во время N-ой итерации в качестве первого дерева плана во время (N+1)-ой итерации.

[0191] Дополнительно, блок 02 установления в частности выполнен с возможностью: когда упомянутый второй итерационный параметр является таким же, как упомянутый первый итерационный параметр, установления второго дерева плана, отличного от упомянутого первого дерева плана, согласно упомянутому первому итерационному параметру.

[0192] Дополнительно, блок 05 записи дополнительно выполнен с возможностью записи времени исполнения для исполнения второго дерева плана.

[0193] Блок 03 определения дополнительно выполнен с возможностью: когда количество N итераций больше, чем второе пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0194] Блок 03 определения дополнительно выполнен с возможностью: когда количество N итераций больше, чем третье пороговое значение, использования упомянутого второго дерева плана с кратчайшим временем исполнения во время всех N итераций в качестве плана исполнения SQL.

[0195] Дополнительно, блок 05 записи дополнительно выполнен с возможностью записи состояния плана исполнения SQL в качестве определенного состояния.

[0196] Дополнительно, блок 02 установления дополнительно выполнен с возможностью: когда выполняется изначальная итерация, установления изначального дерева плана согласно предварительно сохраненному итерационному параметру оценки.

[0197] Блок 04 исполнения дополнительно выполнен с возможностью исполнения изначального дерева плана для получения изначального итерационного параметра, сформированного, когда исполняется изначальное дерево плана.

[0198] Блок 05 обновления дополнительно выполнен с возможностью обновления итерационного параметра оценки посредством использования изначального итерационного параметра для получения первого итерационного параметра.

[0199] Дополнительно, как показано на Фиг. 7, устройство дополнительно включает в себя блок 08 запрашивания.

[0200] Блок 07 запрашивания выполнен с возможностью запрашивания, является ли состояние плана исполнения SQL определенным состоянием.

[0201] Блок 03 определения дополнительно выполнен с возможностью: когда состояние плана исполнения SQL является определенным состоянием, исполнения плана исполнения SQL.

[0202] Дополнительно, блок 06 обновления в частности выполнен с возможностью: получения набора объединения из упомянутого второго итерационного параметра и упомянутого первого итерационного параметра, и использования результата набора объединения в качестве упомянутого первого итерационного параметра.

[0203] Как показано на Фиг. 8, устройство для определения плана исполнения SQL, показанное на Фиг. 4 по 7, может быть получено посредством использования компьютерного устройства (или компьютерной системы) на Фиг. 8.

[0204] Фиг. 8 представляет собой схематическое представление компьютерного устройства 100 согласно варианту осуществления настоящего изобретения. Компьютерное устройство 100 включает в себя по меньшей мере один процессор 11, шину 12 связи, память 13 и по меньшей мере один интерфейс 14 связи.

[0205] Память 13 выполнена с возможностью хранения исполняемой компьютером инструкции. Процессор 11 соединяется с памятью 13 посредством использования шины 12. Когда устройство для определения плана исполнения SQL работает, процессор 11 исполняет исполняемую компьютером инструкцию, сохраненную в памяти 13 для того, чтобы устройство для определения плана исполнения SQL выполняло способ для определения плана исполнения SQL на какой-либо одной из Фиг. с 1 по 3B.

[0206] Конкретные функции вышеприведенного блока 01 получения, блока 02 установления, блока 03 определения, блока 04 исполнения, блока 05 записи, блока 06 обновления и блока 07 запрашивания могут быть реализованы процессором 11 в компьютерном устройстве 100 посредством вызова исполняемой компьютером инструкции, сохраненной в памяти 13.

[0207] Процессор 11 может быть процессором (CPU) общего назначения, микропроцессором, специализированной интегральной схемой (application-specific integrated circuit, ASIC) или одной или более интегральными схемами, которые выполнены с возможностью управления исполнением программ решений настоящего изобретения.

[0208] Шина 12 связи может включать в себя путь для передачи информации между вышеприведенными компонентами. Интерфейс 14 связи выполнен с возможностью связи с другим устройством или сетью связи, такой как Ethernet, сеть с радиодоступом (RAN) или беспроводная локальная сеть (Wireless Local Area Network, WLAN) посредством использования какого-либо устройства типа приемопередатчика.

[0209] Память 13 может быть постоянной памятью (read-only memory, ROM) или другим типом статического устройства хранения, которое может хранить статическую информацию и инструкцию, или оперативной памятью (random access memory, RAM), или другим типом динамического устройства хранения, которое может хранить информацию и инструкцию; или может быть электрически программируемой постоянной памятью (Electrically Erasable Programmable Read-Only Memory, EEPROM), постоянной памятью в форме компакт-диска (Compact Disc Read-Only Memory, CD-ROM), другим устройством хранения в форме компакт-диска, устройством хранения в форме оптического диска (таким как компакт-диск, лазерный диск, оптический диск, компакт-диск формата DVD или диск формата Blu-ray), дисковым носителем данных, другим дисковым устройством хранения или каким-либо другим носителем, который может быть использован для переноса или хранения ожидаемого программного кода в форме инструкции или структуры данных, и к которому может быть осуществлен доступ посредством компьютера. Это в этом документе не ограничивается. Память 13 соединяется с процессором посредством использования шины и может существовать независимо. Память 13 также может быть интегрирована в процессор.

[0210] Память 13 выполнена с возможностью хранения программного кода приложения, который используется для исполнения решений настоящего изобретения, и программный код приложения исполняется под управлением процессора 11. Процессор 11 выполнен с возможностью исполнения программного кода приложения, сохраненного в памяти 13.

[0211] В конкретной реализации в варианте осуществления процессор 11 может включать в себя один или более CPU, таких как CPU0 и CPU1 на Фиг. 8.

[0212] В конкретной реализации в варианте осуществления компьютерное устройство 100 может включать в себя несколько процессоров, например, процессор 11 и процессор 18 на Фиг. 8. Каждый из процессоров может быть одноядерным (с одним CPU) процессором или может быть многоядерным (с несколькими CPU) процессором. Процессор в этом документе относится к одному или более устройствам, схемам и/или ядрам обработки, используемым для обработки данных (например, компьютерной программной инструкции).

[0213] В конкретной реализации в варианте осуществления компьютерное устройство 100 может дополнительно включать в себя устройство 15 вывода и устройство 16 ввода. Устройство 15 вывода осуществляет связь с процессором 11 и может отображать информацию несколькими способами. Например, устройство 15 вывода может быть жидкокристаллическим дисплеем (liquid crystal display, LCD), устройством отображения светоизлучающего диода (light emitting diode, LED), устройством отображения электронно-лучевой трубки (cathode ray tube, CRT) или проектором (projector). Устройство 16 ввода осуществляет связь с процессором 11 и может принимать ввод от пользователя несколькими способами. Например, устройство 16 ввода может быть мышью, клавиатурой, устройством воспринимающего касание экрана или сенсорным устройством.

[0214] Вышеприведенное компьютерное устройство 100 может быть компьютерным устройством общего назначения или компьютерным устройством специального назначения. В конкретной реализации компьютерное устройство 100 может быть настольным компьютером, переносным компьютером, сетевым сервером, персональным цифровым помощником (Personal Digital Assistant, PDA), мобильным телефоном, планшетным компьютером, беспроводным терминальным устройством, устройством связи, встроенным устройством или устройством со структурой, аналогичной структуре на Фиг. 8. Этот вариант осуществления настоящего изобретения не накладывает ограничение на тип компьютерного устройства 100.

[0215] Этот вариант осуществления настоящего изобретения обеспечивает способ для определения плана исполнения SQL. Nый процесс итерации используется в качестве примера. Сначала, получается первый итерационный параметр, обновленный во время (N-1)-ой итерации, например, первый итерационный параметр включает в себя первое собственное значение и/или второе собственное значение, при этом первое собственное значение используется для указания кортежа отношений iой таблицы отношений, и второе собственное значение используется для указания кортежа отношений в результирующем наборе, полученном после того, как операция соединения выполняется в отношении по меньшей мере двух таблиц отношений; затем, второе дерево плана устанавливается посредством использования первого итерационного параметра; и, когда второе дерево плана является таким же, как первое дерево плана, второе дерево плана используется в качестве плана исполнения SQL. В конечном счете полученное второе дерево плана в решении не зависит от уже собранного в базе данных итерационного параметра оценки, но устанавливается согласно первому итерационному параметру, обновленному во время процесса итерации; дополнительно, когда второе дерево плана является таким же, как первое дерево плана, второе дерево плана используется в качестве плана исполнения SQL, так чтобы мог быть определен относительно точный план исполнения SQL, за счет чего улучшается эффективность исполнения плана исполнения SQL.

[0216] Специалисту в данной области техники может быть четко понятно, что в целях удобного и краткого описания разделение вышеприведенных функциональных модулей взято в качестве примера для иллюстрации. В фактической заявке вышеприведенные функции могут быть распределены различным функциональным модулям и могут быть реализованы согласно требованию, то есть, внутренняя структура устройства разделяется на различные функциональные модули для реализации всех или некоторых из функций, описанных выше по тексту. Для подробного процесса работы вышеприведенной системы, устройства и блока ссылаться на соответствующий процесс в вышеприведенных вариантах осуществления способа, и подробности не описываются в этом документе.

[0217] В нескольких вариантах осуществления, обеспеченных в этой заявке, следует понимать, что раскрытая система, устройство и способ могут быть реализованы другими методиками. Например, описанный вариант осуществления устройства является лишь примером. Например, разделение на блоки или модули является лишь разделением по логическим функциям и может быть другим разделением в фактической реализации. Например, множество блоков или компонентов может быть объединено или интегрировано в другую систему, либо некоторые признаки могут игнорироваться или не выполняться. В дополнение, отображенные или рассмотренные взаимные связи или непосредственные связи, или соединения связи могут быть реализованы посредством использования некоторых интерфейсов. Косвенные связи или соединения связи между устройствами или блоками могут быть реализованы в электронной, механической или других формах.

[0218] Блоки, описанные в качестве отдельных частей, могут быть или не быть физически отдельными, и части, отображенные в качестве блоков, могут быть или не быть физическими блоками, могут быть расположены в одном местоположении, или могут быть распределены на множестве сетевых блоков. Некоторые или все из блоков могут быть выбраны согласно фактическим требованиям для достижения целей решений вариантов осуществления.

[0219] В дополнение, функциональные блоки в вариантах осуществления настоящего изобретения могут быть интегрированы в один блок обработки или каждый из блоков может существовать отдельно физически, или два или более блоков интегрированы в один блок. Интегрированный блок может быть реализован в форме аппаратного обеспечения или может быть реализован в форме программного функционального блока.

[0220] Когда интегрированный блок реализуются в форме программного функционального блока и продается или используется в качестве независимого продукта, интегрированный блок может быть сохранен на считываемом компьютером носителе данных. На основе такого понимания, технические решения настоящего изобретения по существу или часть, вносящая усовершенствование в предшествующий уровень техники, либо все или некоторые из технических решений могут быть реализованы в форме программного продукта. Программный продукт сохраняется на носителе данных и включает в себя несколько инструкций для инструктирования компьютерного устройства (которое может быть персональным компьютером, сервером или сетевым устройством) или процессора (processor) выполнять все или некоторые из этапов способов, описанных в вариантах осуществления настоящего изобретения. Вышеприведенный носитель данных включает в себя: любой носитель, который может сохранять программный код, к примеру, USB-флэш-накопитель, съемный жесткий диск, постоянная память (ROM, Read-Only Memory), оперативная память (RAM, Random Access Memory), магнитный диск или оптический диск.

[0221] Вышеприведенные описания представляют собой лишь конкретные способы реализации настоящего изобретения, но не предназначены для ограничения объема охраны настоящего изобретения. Любое изменение или замена, легко представляемая специалистом в данной области техники в пределах технического объема, раскрытого в настоящем изобретении, должна попадать в объем охраны настоящего изобретения. Следовательно, объем охраны настоящего изобретения должен зависеть от объема охраны формулы изобретения.

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.



 

Похожие патенты:

Изобретение относится к средствам связи, используемым на электрических подстанциях, и предназначено для подключения счетчиков электрической энергии к сетям передачи данных автоматизированных систем коммерческого учета электроэнергии.

Изобретение относится к обработке данных, в частности к фото- и видеоанимации на основе метаданных. Технический результат заключается в повышении эффективности обработки фото- и видеоанимации.

Изобретение относится к процессам атрибуции и дифференциации для генерации описательных и контекстных атрибутов данных из плохо курированных или плохо структурированных, неструктурированных или частично структурированных источников.

Изобретение относится к области компьютерных систем и сетей. Технический результат – исключение отслеживания и обнаружения операций относительно ресурса из системы обработки, что повышает эффективность функций этой системы.
Изобретение относится к способу обеспечения совместимости аппаратно-программных встраиваемых устройств при построении сложных систем управления на стадии технического проекта.

Изобретение относится к вычислительной технике. Техническим результатом является снижение количества итераций при решении задачи оптимального управления надежностью методом ускоренного спуска, а также обеспечение устойчивости вычислений решения данной задачи.

Изобретение относится к области кодирования аудио и речи. Технический результат – обеспечение эффективного сокращения объема вычислений при преобразовании коэффициентов линейного предсказания.

Изобретение относится к средствам доступа к веб-узлам. Технический результат заключается в повышении эффективности модернизации веб-узлов.

Изобретение относится к средствам генерации и воспроизведения бумажной пиктограммы. Технический результат заключается в увеличении точности определения пиктограммы.

Изобретение относится к средствам отображения информации по меньшей мере об одном видимом через подвижное окно объекте. Технический результат заключается в улучшении отображения информации о движущихся мимо окна объектах.

Изобретение относится к обработке данных, в частности к фото- и видеоанимации на основе метаданных. Технический результат заключается в повышении эффективности обработки фото- и видеоанимации.

Изобретение относится к процессам атрибуции и дифференциации для генерации описательных и контекстных атрибутов данных из плохо курированных или плохо структурированных, неструктурированных или частично структурированных источников.

Изобретение относится к области обработки цифровых данных. Технический результат заключается в повышение скорости поиска схожих объектов по облакам точек.

Изобретение относится к области компьютерных систем и сетей. Технический результат – исключение отслеживания и обнаружения операций относительно ресурса из системы обработки, что повышает эффективность функций этой системы.

Изобретение относится к области компьютерных систем и сетей. Технический результат – исключение отслеживания и обнаружения операций относительно ресурса из системы обработки, что повышает эффективность функций этой системы.

Изобретение относится к средствам доступа к веб-узлам. Технический результат заключается в повышении эффективности модернизации веб-узлов.

Изобретение относится к средствам отображения информации по меньшей мере об одном видимом через подвижное окно объекте. Технический результат заключается в улучшении отображения информации о движущихся мимо окна объектах.

Изобретение относится к средствам отображения информации по меньшей мере об одном видимом через подвижное окно объекте. Технический результат заключается в улучшении отображения информации о движущихся мимо окна объектах.

Изобретение относится к способу и системе обработки данных. Технический результат заключается в обеспечении возможности поставщику разгрузки использовать большие маркеры.

Изобретение относится к технологиям сетевой связи. Технический результат заключается в повышении безопасности хранения данных.

Изобретение относится к организации слайдов презентации. Техническим результатом является ускорение реорганизации слайдов для переноса сообщения после создания слайдов и добавления контента. В способе генерации слайдов презентации с использованием приложения презентации обеспечивают главный слайд структуры, имеющий диалоговое окно заголовка, множество диалоговых окон подзаголовков и кнопку ‘создать’ для генерации слайдов презентации. Каждое диалоговое окно подзаголовка выполнено с возможностью приема одного подзаголовка. Принимают заголовок и множество подзаголовков. Принимают запрос создания после выбора кнопки ‘создать’ главного слайда структуры и предписывают приложению презентации автоматически генерировать слайд презентации для каждого принятого подзаголовка. Автоматически снабжают гиперссылкой каждый подзаголовок, который расположен в области подзаголовков на каждом слайде презентации, для создания поддерживающей навигацию презентации на основании полученных вводов. Автоматически генерируют слайд презентации и отображают сгенерированные слайды презентации в приложении презентации. 3 н. и 6 з.п. ф-лы, 19 ил.

Изобретение относится к определению плана исполнения языка структурированных запросов. Техническим результатом является повышение точности плана исполнения SQL для инструкции SQL и эффективности исполнения плана исполнения SQL. В способе для определения плана исполнения SQL получают первый итерационный параметр, сформированный после того, как первое дерево плана исполняется на таблице отношений во время -й итерации. План исполнения SQL соответствует по меньшей мере одной таблице отношений. Устанавливают второе дерево плана согласно первому итерационному параметру и исполняют второе дерево плана. Записывают второй итерационный параметр, сформированный при исполнении второго дерева плана. Определяют первое или второе дерево плана в качестве плана исполнения SQL, когда различие между вторым и первым деревом плана не является большим, чем первое пороговое значение. Обновляют первый итерационный параметр согласно второму итерационному параметру и используют обновленный первый параметр в качестве первого итерационного параметра во время -й итерации, когда различие между вторым и первым деревом плана является большим, чем первое пороговое значение. 3 н. и 36 з.п. ф-лы, 10 ил.

Наверх