Задачи оптимизации выполнения императивного кода в реляционных базах данных
Автор: Danilk1212 • Май 15, 2019 • Реферат • 2,926 Слов (12 Страниц) • 429 Просмотры
АНОТАЦИЯ (АБСТРАКТНЫЙ)
На протяжении десятилетий СУБД поддерживали декларативные SQL, а также императивные функции и процедуры в качестве способов выражения задач обработки данных пользователями. В то время как оценка декларативного SQL получила большое внимание, в результате чего были применены очень сложные методы, оценка императивных программ оставалась на высоком уровне. Императивные программ предлагают несколько выгод по сравнению с SQL качеством, следовательно, часто предпочитаемые и широко используемые. Но, к сожалению, их ужасная производительность, не поощряет и даже исключает их пользу в различных ситуациях. Мы решаем эту важную проблему, чему до сих пор уделялось мало внимания.
Мы представляем Froid, расширяемую структуру для оптимизации обязательных программ в реляционных базах данных. Froid новый подход автоматически превращает весь пользовательский денэд функций (UDF) в реляционных алгебраических выражений, и внедряет их в вызываемый SQL запрос. Эта форма теперь поддается оптимизации на основе затрат и приводит к EF-ориентированным, ориентированным на набор параллельным планам, в отличие от ине - ориентированного, итеративного, последовательного выполнения UDF. Подход Froid дополнительно приносит выгоды для оптимизации пользовательских функций без дополнительного внедрения электронной ОРТ. Мы описываем дизайн Froid и представляем наши экспериментальные оценки, что демонстрирует повышение производительности на несколько порядков на реальных рабочих нагрузках.
1. ВВЕДЕНИЕ
SQL, возможно, является одной из ключевых причин популярности реляционных баз данных сегодня. Декларативный способ выражения намерений SQL, с одной стороны, обеспечивает высокоуровневые абстракции для обработки данных, в то время как с другой стороны, способствует росту сложных методов оценки запросов и высокоэффективных способов обработки данных.
Несмотря на выразительную силу декларативного SQL, почти все РСУБД поддерживают процедурные расширения, которые позволяют пользователям написание программ на различных языках (например, Transact - SQL, C#, Java и R), используя такие императивные конструкции в качестве переменной, задания, условные ветвления и циклы. Эти расширения довольно широко используются. Например, мы обратили внимание, что есть порядка десятков миллионов сделок - В SQL (Т-SQL) в функции сегодня в Microsoft Azure с Служба базы данных SQL с миллиардами ежедневных вызовов.
Пользовательские функции и процедуры предлагают много преимуществ по сравнению со стандартным языком SQL. (a) Они представляют собой элегантный способ достижения модульности и повторное использование кода в SQL запросах, (b) некоторые вычисления (например, сложные бизнес-правила и алгоритмы МL) проще выразить в императивной форме, (c) они позволяют пользователям выразить намерение, используя сочетание простого SQL и императива кодекс, в отличие от сложных SQL-запросов, тем самым улучшая читабельность и ремонтопригодность. Эти выгоды не ограничиваются РСУБД, о чем свидетельствует тот факт, что Бигдата (улей, свечи и т. д.) поддержку таких функций, как хорошо.
К сожалению, вышеупомянутые выгоды приходят на существенное снижение производительности, из-за того, что UDF оцениваются неэффективно. Среди практиков известен факт, что UDFs являются" злом", когда речь идет о соображениях производительности [35, 28]. На самом деле, пользователям советуют специалисты, чтобы избежать пользовательских функций для повышения производительности. Интернет изобилует статьями и дискуссиями, которые вызывают [35, 28]. На самом деле, пользователям советуют специалисты, чтобы избежать пользовательских функций для повышения производительности. Интернет изобилует статьями и дискуссиями, которые вызывают накладные расходы. Выполнение функций [34, 36, 37, 24, 25]. Это правда, для всех популярных РСУБД, коммерческих и с открытым исходным кодом.
...