Методы оптимизации выполнения запросов в реляционных СУБД


Оптимизаторы с гибкой структурой - часть 2


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

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

Для функционирования оптимизатора должно быть задано множество планов, описывающих стратегии выполнения операций, STARs (Strategy Alternative Rules). Правила формулируются на специально разработанном языке. Каждое правило определяет именованный, параметризованный объект в терминах одного или более альтернативных определений. Альтернативные определения выражаются в терминах одного или более других STAR или примитивных предопределенных операторов LOLEPOP (Low-Level-Plan-Operator). В терминах System R LOLEPOP соответствует оператору интерфейса RSS. Примером STAR может быть следующее правило:

¦ ACCESS (Heap, T, C, P) ¦ ¦ IF Storage (T) = 'heap' ¦ ¦ ACCESS (BTree, T, C, P) ¦ TableScan (T, C, P) = + IF Storage (T) = 'Btree' ¦ ¦ ACCESS (RTree, T, C, P) ¦ ¦ IF Storage (T) = 'Rtree' L

Параметры STAR Tablescan T, C и P задают, соответственно, имя отношения, набор выбираемых столбцов и простой предикат выборки. ACCESS - LOLEPOP, соответствующий доступу на физическом уровне к очередному кортежу отношения, организованному одним из допустимых в Starburst способов.


Начало  Назад  Вперед